概述
用 類型轉換函式(type conversion function)可以將一個類的對象轉換為一個指定類型的數據.
類型轉換函式的一般形式為 :
operator 類型名()
{實現轉換的語句}
在函式名前面不能指定函式類型,函式沒有參數.
請注意 : 函式名是 : operator double 這點是和運算符重載時的規律一致的.
示例
類型轉換函式的作用是將一個類的對象轉換成另一類型的數據.例如,如果已聲明了一個Complex類,可以在Complex類中這樣定義類型轉換函式 :
operator double()
{
return m_dReal;
}
函式返回double型變數m_dReal的值. 它的作用是將一個Complex類對象轉換為一個double型數據,其值是Complex類中的數據成員m_dReal的值.
使用類型轉換函式的簡單例子
#include <iostream>
using namespace std;
class Complex
{
public:
Complex();
Complex(double dReal,double dImag);
operator double();
private:
double m_dReal;
double m_dImag;
};
Complex::Complex()
{
m_dReal = 0;
m_dImag = 0;
}
Complex::Complex(double dReal,double dImag)
{
m_dReal = dReal;
m_dImag = dImag;
}
Complex::operator double()
{
return m_dReal;
}
int main()
{
Complex obj(3,4);
double dNum = 0.0;
dNum = 2.5 + obj;
cout<<"dNum="<<dNum<<endl;// dNum=5.5
return 0;
}
如果在Complex類中沒有定義類型轉換函式operator double, 程式編譯將出錯. 因為不能實現double型數據與Complex類對象相加. 現在,一定了成員函式operator double, 就可以利用它將Complex類對象轉換為double型數據. 請注意 : 程式中不必顯式地調用類型轉換函式,它是自動被調用的,即隱式調用.