class tmp { public: int a; int b; }; class ctest { public: ctest() { p = new tmp; } ~ctest() { delete p; } ctest& operator = (const ctest& t) { tmp * tmpptr = p; //能够保证自我赋值的安全性问题; p = new tmp(*t.p); //触发系统的默认拷贝构造函数,浅拷贝; delete tmpptr; return *this; } public: tmp *p; }; int main() { ctest t; t.p->a = 1; t.p->b = 2; printf("%p ", t.p); t = t; printf("%p ", t.p); cout << t.p->a << ":" << t.p->b << endl; return 0; }