C++ 转换函数 与 4种cast

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

http://blog.csdn.net/pushfang/article/details/27368715

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值