C++ 重载类型转换运算符
operator data_type ()
{
…
return xxxx // 返回值的类型即为data_type,不需要再加返回值类型声明
}
注意: 上述即为类型转换运算符函数的定义模型。重载类型转换运算符必须为类的成员函数,不能有返回类型,形参列表也必须为空,通常是const的。
1. 基础样例
class Complex {
private:
int value;
public:
explicit Complex(int i) : value(i) {
}
operator int () // 将Complex对象直接转为int类型,同时函数的返回值也为int类型
{
return value;
}
};
int main()
{
Complex c(2);
cout << (int)c << endl; // cout << c.operator int() << endl;
int temp = 1 + c; // int temp = 1 + c.operator int() << endl;
cout << temp << endl;
return 0;
}
};
输出结果:
2
3