使用場景
C++中當你創建了一個類,你想把這個類對象轉換成基本類型的函數。類對象->基本類型對象
原理
如下實例,設計一個分數類,實現分數轉換成double 浮點數的轉換函數。并在mian函數隱式調用。
#include<iostream>
class Fraction{
public:Fraction(int fenzi, int fenmu = 1) : m_numerator(fenzi) , m_denominator(fenmu) {}operator double() const {return static_cast<double>(m_numerator) / m_denominator;}
private:int m_numerator;int m_denominator;
};int main() {Fraction f(3,5);double res = 3 + f; //調用operator double()將 f 轉換成 0.6std::cout<<"res = " << res << std::endl;return 0;
}
其中 res = 3 + f;
由編譯器進行隱式轉換。編譯器會先找 int + Fraction的全局 + 的定義,或者去Fraction內部尋找是否存在轉換函數。
調用形式:
- 用類型符顯示調用
- 自動類型轉換時隱式調用
設計形式: operator 數據類型() {實現}
- 不能有返回值
- 不能有參數
相關知識點
基本數據類型->類類型
類類型->另一類類型