【从 C 向 C++ 进阶】- 类 - 16. 类类型转换

1. 类类型隐式转换陷阱

C++ 的类类型的转换规则如下:

  • 转换函数定义在源对象(转换对象)类中,是转换源对象的成员函数。
  • 一旦为转换源类型提供了到目标类型的转化函数,就可以将源类对象以隐式转化的方式转换得到目标类型对象。
  • 当没有定义转换函数时,编译器会尽力把源对象转化为目标对象,且容易触发隐私转换,不一定报错。
  • 实验:
class Test
{
   
private:
	int m_var;

public:
	Test(int num)
	{
   
		m_var = num;
	}
	int GetVar()
	{
   
		return m_var;
	}
};

int main(int argc, char *argv[])
{
   
	Test obj_A = 0;
	obj_A = 2;
	cout << "obj_A.GetVar() = " << obj_A.GetVar() << endl;	// obj_A.GetVar() = 2
	obj_A = 3.14;
	cout << "obj_A.GetVar() = " << obj_A.GetVar() << endl;	// obj_A.GetVar() = 3
}

以上在将整形字面量 2 和浮点型字符量 3.14 分别赋值给类对象 obj_A 时,编译器会尽力地进行类型转,例如:

obj_A = 2; => obj_A = Test(2);
obj_A = 3.14; => obj_A =</
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值