请教关于拷贝构造函数的调用问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 14:51:31
#include "iostream.h"
class Myclass
{
public:
Myclass (int n) {number=n;}
Myclass (Myclass &other) {number=other.number;}
~Myclass () {}
private:
int number;
};
Myclass fun (Myclass p)
{
Myclass temp (p);
return temp;
}
int main()
{
Myclass obj1(10),obj2(0);
Myclass obj3(obj1);
obj2=fun(obj3);
return 0;
}
拷贝构造函数被调用了几次?我怎么就看出来2次?

4次
Myclass obj3(obj1); 1次

obj2=fun(obj3)中fun函数的实参obj3到形参p的传递算1次,Myclass temp (p)算1次,obj2=fun(obj3)的返回值传递到obj2算1次

总共4次

其实,对象的直接赋值也会调用拷贝构造函数,如:
MyClass a;
MyClass b = a; 这也会调用拷贝构造函数

函数参数传递只要是按值传递也调用拷贝构造函数
函数返回只要是按值返回也调用拷贝构造函数