C++ 几种构造函数的区分和调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 几种构造函数的区分和调用相关的知识,希望对你有一定的参考价值。

class A
{
public:
    A();                                    //默认构造
    A( A& a );                              //copy构造
    const A& operator=( const A& a );       //赋值操作符
};

//调用测试
A a1;        //默认构造
A a2( a1 );  //copy构造
A a3 = a2;   //copy构造
a2 = a3;     //赋值操作符

//对3、4的解释:
//
//3. 如果有对象被定义,那么肯定会调用构造
//
//4. 没有对象被定义时,就会调用赋值操作符




[ copy构造 ]

void dost(A a);

A a;
dost(a);

//这里a对象是复制方式调用的dost函数
//他是由A的copy构造来完成的
//所以传值调用就意味着会调用copy构造
//所以实际运用中还是推荐使用传引用的方式调用(但不要返回局部对象的引用!)

 

以上是关于C++ 几种构造函数的区分和调用的主要内容,如果未能解决你的问题,请参考以下文章

构造函数的调用时机

盘点c++几种常见的设计模式及具体实现

盘点c++几种常见的设计模式及具体实现

如何从另一个构造函数调用 C++ 类构造函数 [重复]

如何避免在 C++ 中调用祖父构造函数?

C++:在派生类构造函数中调用基类赋值运算符的错误形式?