C++:類型轉換

在一個類裏面,用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並沒有改,只是做了一個新的東西出來。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章