C++ 转换函数 与 4种cast
转换函数:
C++中挺有意思的一个特性
格式:
operator 转换类型名称()
注意:
(1)返回值固定为重载数据类型
(2)本身不存在返回声明
“转换函数只能是成员函数,无返回值,空参数。
不能定义到void的转换,也不允许转换成数组或者函数类型。
转换常定义为const形式,原因是它并不改变数据成员的值。”
引用自http://blog.csdn.net/xscarlet/article/details/1563656
Talk is cheap!
#include <iostream>
using namespace std;
class Example{
private:
double num;
public:
Example() {num = 0.0;}
Example(double s) {num = s;}
void show() {cout << num << endl;}
operator double () const;
operator int () const;
};
Example::operator double () const
{
return num + 1.2;
}
Example::operator int () const
{
return int(num) + 10;
}
int main()
{
Example tt(3.3);
cout << double (tt) << endl;
cout << int (tt) << endl;
return 0;
}
转换函数存在的问题:
(1)有的情况下会引起二义性的问题,虽然看起来确实很灵活
(2)与隐式的转换函数产生冲突
4种cast