mur*_*ish -1 c++ copy-constructor
class Myinteger(){
public:
Myinteger( int len ); // simple constructor
Myinteger( const Myinteger &obj); // copy constructor
~Myinteger(); // destructor
private:
int *ptr;
}
Myinteger::Myinteger(const Myinteger &obj) {
cout << "Copy constructor allocating ptr." << endl;
ptr = new int;
*ptr = *obj.ptr; // copy the value
}
int main(){
Myinteger obj1(10);
Myinteger obj2(20);
obj1=obj2;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
将obj2分配给obj1时不调用复制构造函数,我确认它是"复制构造函数分配ptr".没有打印到控制台,
因此,如果在将obj2分配给obj1时,如果没有调用复制构造函数在上述情况下调用哪个方法,那么也要告诉在哪些情况下调用类的复制构造函数.
复制构造函数,例如声明如下:
Myinteger(const Myinteger& other);
Run Code Online (Sandbox Code Playgroud)
也可以用作其中之一
Myinteger obj2 = obj1;
Run Code Online (Sandbox Code Playgroud)
要么
Myinteger obj2(obj1);
Run Code Online (Sandbox Code Playgroud)
但是赋值运算符,声明为:
Myinteger& operator =(const Myinteger& other);
Run Code Online (Sandbox Code Playgroud)
将用于您的代码所在的位置
Myinteger obj2;
obj2 = obj1;
Run Code Online (Sandbox Code Playgroud)
这就是代码中的内容,因此调用赋值运算符,而不是复制构造函数.