#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout << "A::A()" << endl;
}
A(const A & ra)
{
cout << "A::A(const A & ra)" << endl;
if (&ra == this) {
cout << "init with self" << endl;
return;
}
// copy ra's data to self
}
A & operator = (const A & ra)
{
cout << "A::operator = (const A & ra)" << endl;
if (&ra == this) {
cout << "copy with self" << endl;
return *this;
}
// copy ra's data to self
return *this;
}
~A()
{
cout << "A::~A()" << endl;
}
};
int main()
{
A a(*new (&a) A(a));
return 0;
}
运行打印:
A::A(const A & ra)
init with self
A::A(const A & ra)
init with self
A::~A()

本文详细解析了C++中类的拷贝构造函数和赋值运算符的实现原理及使用注意事项,通过实例展示了如何正确地实现这两个关键成员函数,避免常见的内存泄露和数据不一致问题。
769





