C++ postfix++ 运算符重载

标签 c++ operator-overloading

根据这个:Operator overloading ,

class X {
  X& operator++()
  {
    // do actual increment
    return *this;
  }
  X operator++(int)
  {
    X tmp(*this);
    operator++();
    return tmp;
  }
};

是实现 ++ 运算符的方式。第二个(后缀运算符)按值而不是按引用返回。这很清楚,因为我们不能返回对本地对象的引用。因此,我们不是在堆栈上创建 tmp 对象,而是在堆上创建它并返回对该对象的引用。所以我们可以避免额外的拷贝。所以我的问题是,以下是否有任何问题:

class X {
  X& operator++()
  {
    // do actual increment
    return *this;
  }
  X& operator++(int)
  {
    X* tmp = new X(*this);
    operator++();
    return *tmp;
  }
};

最佳答案

调用者现在必须处理删除内存。

关于C++ postfix++ 运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17121810/

相关文章:

swift - swift 中的 Curried 中缀运算符。可能吗?

c++ - 隐式转换掩盖了重载的运算符。如何解决?

c++ - NIC的TX/RX buffer中的数据是如何传输到dpdk ring buffer而不是kernel ring buffer的?

javascript - Poco C++ websockets - 如何以非阻塞方式使用?

c++ - 对于单元测试,是否有一种骇人听闻的方法来更改 const 变量的值?

c++ - find() 使用重载运算符==

c++ - 派生类的重载 << 运算符表示无效操作数

c++ - 使用模板可视化代码中的2D和3D形状

c# - 在 TCP 中接收数据

c++ - Visual Studio std::stringstream pubsetbuf 不起作用