简体   繁体   English

关于复制构造函数和重载赋值运算符

[英]about copy constructor and overloaded assignment operator

I would like to know in which situations should a copy constructor or assignment operator should be defined. 我想知道应该在哪些情况下定义复制构造函数或赋值运算符。 From what I researhed I see that whenever value is passed by value or returned by value, the copy constructor and overloaded assignment operator needs to be defined. 根据我研究的内容,我发现每当值通过值传递或由值返回时,都需要定义复制构造函数和重载赋值运算符。 However, when pointers or reference are used for pass/return by pointer or reference(&), do we need copy constructor/overloaded assignment operator 但是,当指针或引用用于指针或引用(&)的传递/返回时,我们是否需要复制构造函数/重载赋值运算符

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?
}

定义指向对象的指针或引用不需要使用任何构造函数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM