拷贝构造函数参数应该为引用,拷贝构造函数的参数使用引用类型不是为了减少一次内存拷贝, 而是避免拷贝构造函数无限制的递归下去。
#include<iostream>
using namespace std;
class A {
private:
int value;
public:
A(int n) {
value = n;
cout << value;
cout << "带参构造"<<endl;
}
A(const A &other) {
value = other.value;
cout << value;
cout << "拷贝构造"<<endl;
}
A &operator=(const A &other) {
value = other.value;
cout << value;
cout << "赋值运算符重载" << endl;
return *this;
}
void print(A other) {
cout << value << endl;
}
};
int main(void) {
A a(10);
A c(20);
c = a;
A b = a;
b.print(b);
c.print(c);
system("pause");
return 0;
}