小编nam*_*123的帖子

在重载预增量运算符时,是否必须返回对象的引用?

我可以用吗:

MyClass& MyClass::operator++ () {
    a++;  // private var of MyClass
    return (*this);
}
Run Code Online (Sandbox Code Playgroud)

或者它可以是:

MyClass MyClass::operator++ ();
Run Code Online (Sandbox Code Playgroud)

有什么不同?


谢谢你的回答.我有另一个问题.

很多人都这样做:

MyClass& MyClass::operator++();
MyClass MyClass::operator++(int);
Run Code Online (Sandbox Code Playgroud)

这不合逻辑吗?如果可以,请举一些例子.

我知道第一个版本是预增量,第二个版本是后增量,但我问为什么第一个版本返回引用而第二个版本没有?它在相同的代码(类)中,并且使用相同的代码.

c++ function operator-overloading

8
推荐指数
1
解决办法
1万
查看次数

重载后增量运算符

MyClass MyClass::operator++(int) {
    return ++(*this);
}
Run Code Online (Sandbox Code Playgroud)

那是我写的代码.我工作正常,但所有教程都说我必须创建一个临时对象并返回它:

MyClass MyClass::operator++(int) {
    MyClass tmp = *this;
    ++(*this);
    return tmp;
}
Run Code Online (Sandbox Code Playgroud)

请告诉我哪种方式最好?

c++

5
推荐指数
2
解决办法
1518
查看次数

标签 统计

c++ ×2

function ×1

operator-overloading ×1