哪几种情况会调用用拷贝构造函数分别举例

来源:百度知道 编辑:UC知道 时间:2024/06/07 14:36:43
能否用比较完整一点的程序
可以在机子上测试出结果的
谢谢!

class A{
A(const A &a) {
...
}
...
};

// 1
A a1;
A a2(a1); //

// 2
func(A a) { //没有用引用传递
...
}
func(a1);

----------------
#include <iostream>

using std::cout;
using std::endl;

class CA {
public:
CA() { cout << "CA()" << endl;}
CA(const CA &ca) {
cout << "CA(ca)" << endl;
}

~CA() { cout << "~CA()" << endl;}
};

void func(const CA ca) { // 不使用引用,隐式调用拷贝构造函数
// ...
}

int main(int argc, char *argv[]) {
CA ca1;
CA ca2(ca1); // 定义时调用拷贝构造函数

func(ca1);
}