一般我们都会用到类型转换操作,如将int型数据转换成double型数据,甚至是将数字转换成对象。那对象直接转换成数字呢?
答案是不可以直接转换,但是有种方法间接的实现这一功能,它就是转换函数。
构造函数,可以实现从某种类型到类类型的转换,但无法将某一类型的对象直接转换成数字。关于这一点,C++特地定义了一种特殊的运算符函数——转换函数。
转换函数的形式为:
operator typename();
其关键字operator跟运算符重载函数一致,但用法却不一样。
以下是几点要注意的地方:
- 转换函数必须是类的方法,必须在类的声明时进行声明,某一类如果没有对应的转换函数,不能使用该转换函数
- 转换函数不能指定返回类型,但必须有返回值
- 转换函数不能有参数。
class example{
private:
int stone;
double stove;
public:
operator int() const;
operator double() const;
}
example::operator int() const
{
// return stone+5;
return int(stove+5.0);
}
example::operator double() const
{
// return stove+5.0;
return double(stone+5);
}