我想要一种关于复制构造函数的方法
class A {
int *a;
public :
A():a(0){
a = new int;
*a =0;}
A (const A & ob) {
cout<<"In side copy constructor ..."<<endl;
a = new int;
*a = *ob.a;
}
~A() { cout <<"IN side destructor ..."<<endl;delete a;}
void setdata(int ip) { *a = ip;}
int getdata() { return *a;}
};
int main() {
A *dob1 = new A();
dob1->setdata(5);
A sob1= *dob1; //copy constructor gets called;
//but for this case copy constructor will not be called
// how should i write copy constructor for this case
A *dob2 = dob1; //whether copy constructor will be called or not
cout<<endl;
cout<<" dob1 data "<< dob1->getdata()<<endl;
cout<<" sob1 data " << sob1.getdata()<<endl;
cout<<" dob2 data "<< dob2->getdata()<<endl;
delete dob1;
return 0;
}
因此,对于这种情况,将调用如何创建复制构造函数。
请回复我。
答案 0 :(得分:2)
在A *dob2 = dob1;
中,对象未被复制,指针为。
A*
是完全不同的类型。指针dob2
将指向dob1
,但它本身不是对象,因此不要期望调用复制构造函数。
如果您A* dob2 = new A(dob1);
将调用复制构造函数,将创建一个对象,dob2
将指向它,但它仍然不是对象本身,而是指针。