在一個類裏面,用X::operator double() const{
}//意思是把類裏面的東西變成double類的
通常有個const用來保證不會修改自己
儘量用自己寫的函數來進行類型轉化,自動的往往容易錯,自己寫的一眼就能夠看出來。
//舉個例子
class Orange;
class Apple{
public:
operator Orange() const;
};
class Orange{
public:
explicit Orange(Apple);//加了explicit就不能夠進行自動類型轉化了
};
void f(Orange){}
int main(){
Apple a;
f(a);
return 0;
}
Apple類中,表示將Apple類轉換成爲Orange類了,而且加個const不會修改自己。
第二種方法:做一個專用的類型轉換函數:
class Rational{
public:
operator double() const;
};
Rational::operator double() const{
return numerator_/(double)denominator_;
}
Rational r(1,3);
double d = 1.3*r;
表示用operator將this函數轉換爲double,this並沒有改,只是做了一個新的東西出來。