0
我想知道在哪些情况下应该定义复制构造函数或赋值运算符。从我研究的内容可以看出,无论何时值通过值传递或通过值返回,都需要定义复制构造函数和重载赋值运算符。然而,当用于通过指针或引用(&)通/返回指针或引用,我们需要拷贝构造函数/重载赋值运算符关于复制构造函数和重载赋值运算符
class Sample
{
public :
// Assume a constructor that sets the node member
SampleNode * getNode()
{
return _node;
}
private:
SampleNode * node;
}
class SampleNode
{
public:
void getValue()
{
return _value;
}
private:
unsigned int value;
}
main()
{
Sample * ptr = new Sample(15);
SampleNode *node = getNode(); // Do we need a copy constructor here?
}
该代码没有意义。你会得到大量的编译器错误。给出几个问题:1.新样本(15)不能工作。没有适当的构造函数。 2.返回_node。身份不明的标识符_node。 3. getNode();身份不明的函数getNode。等等等等。 – thang
你的例子在技术上具有未定义的行为(除非你修复它与编译器错误一起),但要记住编译器给你的一般工作,如果你做的事情是正确的。 – chris
您应该了解[三位法则](https://en.wikipedia.org/wiki/Rule_of_three_%28C++_programming%29) – Nobody