看书时发现的一个指针问题,C++类中的副本构造器
class MyClass {
public:
MyClass(int *ptr);
~MyClass();
MyClass(const MyClass &rhs);
MyClass &operator=(const MyClass &rhs);
private:
int *ptr;
};
MyClass::MyClass(int *ptr) {
// TODO Auto-generated constructor stub
cout<<"enter constructor"<<endl;
this->ptr = ptr;
cout<<"leaver constructor"<<endl;
}
MyClass::~MyClass() {
// TODO Auto-generated destructor stub
cout<<"enter destructor"<<endl;
delete ptr;
cout<<"leaver destructor"<<endl;
}
MyClass::MyClass(const MyClass &rhs){
cout<<"enter copyctor"<<endl;
*this = rhs;
cout<<"leave copyctor"<<endl;
}
MyClass &MyClass::operator =(const MyClass &rhs){
cout<<"enter operator="<<endl;
if(this!=&rhs){
delete ptr;
ptr = new int;
*ptr = *rhs.ptr;
}else{
cout<<"two obj is the same"<<endl;
}
cout<<"leave operator="<<endl;
return *this;
}
MyClass obj1(new int(1));
MyClass obj2 = obj1;