根据这个: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/