C++之单参数构造函数隐式转换
1 BaseClass oBaseClass = "隐式转换构造函数调用"; 2 3 BaseClass oBaseClass2 = oBaseClass; 4 BaseClass oBaseClass3("显示调用构造函数"); 5 oBaseClass3= oBaseClass2; 6 7 auto testFunc = [=](BaseClass oBase) 8 { 9 10 }; 11 12 testFunc(oBaseClass); 13 cout << "===============分割线===========" <<endl; 14 auto testFunc2 = [=](BaseClass &oBase) 15 { 16 17 }; 18 testFunc2(oBaseClass);
BaseClass oBaseClass2 = oBaseClass; 调用的是拷贝构造函数
引用类型不会调用构造函数;
防止隐性转换,可以加explicit 修饰修饰
调用拷贝构造函数的情况
- (1)用对象初始化同类的另一个对象。
- (2)如果函数的形参是对象,当进行参数传递时将调用拷贝构造函数。
- (3)如果函数的返回值是对象,函数执行结束时,将调用拷贝构造函数对无名临时对象初始化。