C++ 复制构造函数何时调用小节

复制构造函数用于将一个对象复制到新创建的对象中

所以产生临时对象会涉及到要使用一种特殊的构造函数来实现——复制构造函数

在类设计没有使用new时,可以依赖于自动生成的复制构造函数

在涉及到要使用new时,就必须手动定义复制构造函数来使程序正常的工作,所以何时会产生临时对象(也就是说需要使用复制构造函数)显得尤为重要(当然,总是设计一个复制构造函数或许也能解决不清楚是否需要临时对象的问题也许也能解决问题)

初始化/赋值 类变量时:

stock1=Stock(...);//一定会在赋值前创建一个临时对象

Stock stock2=Stock(...) //可能会产生临时对象

用类变量去为同类不同类变量初始化时:

StringBad ditto(motto); //一定会使用复制构造函数

StringBad metoo=motto; //一定会使用复制构造函数,有可能会使用赋值运算符

StringBad also=StringBad(motto); //一定会使用复制构造函数。有可能会使用赋值运算符

StringBad *PStringBad=new StringBad(motto); //一定会使用复制构造函数

按值传递对象时或返回对象时,都会使用复制构造函数

将三个类对象相加时,可能产生临时对象来保存中间结果

猜你喜欢

转载自www.cnblogs.com/Champion-L/p/9048489.html