C++(类和对象.下)

类型转换

先给出以下代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
class B {
private:
	int _a1;
public:
	B(int a){
		_a1 = a;
	}
	void Print() {
		cout << _a1<< endl;
	}
};
int main() {
	//实例化对象1
	B b(1);
	b.Print();

	//实例化对象2
	B b2 = 2;
	b2.Print();

	return 0;
}

由以上运行结果可知,我们晓得实例化对象1很正常调用构造函数,但实例化对象2觉得比较奇怪。

这是因为实例化对象2进行了一个隐式类型转换。在数值2赋值给B b2对象时,会默认生成一个临时的拷贝构造(拷贝函数为类的构造函数)。然后在把拷贝构造后的类型给对象b2,进行调用。

如果不想进行类似隐式类型转换,那么就在构造函数前加explicit关键字即可。

(未完待续。。。。。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值