#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()