拷贝构造函数的调用时机有三个:
首先定义一个类
class Maker:
{
public:
Maker(const Maker &maker)
{
cout<<"拷贝构造函数"<<endl;
}
};
1:对象以值方式给函数参数
//1.对象以值方式给函数参数
void func(Maker m)//Maker m=ml
{
}
void test01()
{
Maker ml;
func (m1);
}
2:用一个已有的对象去初始化另一个对象
//2.用一个已有的对象去初始化另一个对象
void test02()
{
Maker ml;
Maker m2(m1),
}
3:函数的局部对象以值的方式从函数返回
注:vs Debug模式下,会调用拷贝构造,vs Release模式下不会调用拷贝构造,qt也不调用
//3.函数的局部对象以值的方式从函数返回
Maker func2()
{
//局部对象
Maker m;
cout<<"局部对象的地址"<<&m<<endl;
}
void test03()
{
Maker ml= func2()
cout<<"m1对象的地址:"<<&ml<<endl;
}