在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)。