Myclass obj3(obj1); //直接调用拷贝构造函数
obj2=fun(obj3);//调用三次,第一次是参数按值传递,使用拷贝构造函数创建了一个临时对象。第二次是函数内部使用拷贝构造函数初始化局部对象temp,第三次是按值返回需要用拷贝构造函数创建临时对象。
很简单,程序改为:
Myclass(int n){number=n;cout<<"构造函数被调用"<
构造 2次
拷贝构造 4次
析构 6次
拷贝构造函数调用次数
Myclass obj3(obj1); //1
Myclass fun(Myclass p) //2
Myclass temp(p);//3
return temp;//4
这2个是普通构造函数
Myclass obj1(10),obj2(0);