Joe*_*att 2 c++ operator-overloading copy-constructor visual-c++ c++11
在主要:
Text *p1 = new Text("alfa");
Text *p2 = new Text("delta");
p1 = p2;
Run Code Online (Sandbox Code Playgroud)
在Text.h中
private:
Text (const Text& t);
Text& operator=(const Text& t);
Run Code Online (Sandbox Code Playgroud)
但是,我认为编译器应该给出一个错误,例如"operator = is unaccessible",而代码工作就像复制构造函数和operator =不是私有的.实际上,最后p1 = p2 ="delta".为什么?一些忠告?谢谢大家.
p1并且p2是指针.您可以将一个指针指向另一个相同类型的指针.在您的代码段中,您的复制构造函数和复制赋值运算符都未被使用.
Text *p1 = new Text("alfa");
Text *p2 = new Text("delta");
p1 = p2;
Run Code Online (Sandbox Code Playgroud)
如果你写这个,将使用复制构造函数,例如:
Text *p3 = new Text( *p1 );
Run Code Online (Sandbox Code Playgroud)
如果您写了这个,将使用复制赋值运算符:
*p1 = *p2;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您将一个类型的对象分配Text给另一个类型的对象Text.