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)如果函数的返回值是对象,函数执行结束时,将调用拷贝构造函数对无名临时对象初始化。

 

posted on 2021-09-03 12:47  奔跑吧,蜗牛!  阅读(330)  评论(0编辑  收藏  举报

导航