C++類型轉(zhuǎn)換運(yùn)算符如何重載

c++
小樊
81
2024-11-09 05:42:32

在C++中,你可以通過(guò)在類中定義一個(gè)名為operator的成員函數(shù)來(lái)重載類型轉(zhuǎn)換運(yùn)算符

#include <iostream>

class Fraction {
public:
    Fraction(int numerator = 0, int denominator = 1)
        : numerator_(numerator), denominator_(denominator) {}

    // 重載類型轉(zhuǎn)換運(yùn)算符為int
    operator int() const {
        return numerator_ / static_cast<double>(denominator_);
    }

private:
    int numerator_;
    int denominator_;
};

int main() {
    Fraction frac(4, 2);
    int result = static_cast<int>(frac); // 使用重載的類型轉(zhuǎn)換運(yùn)算符
    std::cout << "The result is: " << result << std::endl; // 輸出:The result is: 2
    return 0;
}

在這個(gè)例子中,我們定義了一個(gè)名為Fraction的類,它表示一個(gè)分?jǐn)?shù)。我們重載了類型轉(zhuǎn)換運(yùn)算符operator int(),使得Fraction對(duì)象可以隱式轉(zhuǎn)換為int類型。在轉(zhuǎn)換過(guò)程中,我們將分子除以分母得到一個(gè)浮點(diǎn)數(shù),然后將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)。

注意,當(dāng)重載類型轉(zhuǎn)換運(yùn)算符時(shí),最好將其聲明為const成員函數(shù),因?yàn)樗粫?huì)修改對(duì)象的狀態(tài)。

0