我目前正在学习 C++ 中的面向对象编程,我正在尝试理解
this
指针、return *this
以及引用的使用的概念。我遇到了一个演示这些概念的示例代码片段,但我仍然在努力完全理解它们如何协同工作。
这是示例代码:
#include <iostream>
using namespace std;
class MyClass {
public:
MyClass& setNum(int num) {
this->num = num;
return *this;
}
MyClass& displayNum() {
cout << "Num: " << this->num << endl;
return *this;
}
private:
int num;
};
int main() {
MyClass obj;
obj.setNum(10).displayNum();
return 0;
}
具体来说,我有以下问题:
在此上下文中
this
指针的用途是什么?它是如何运作的?
有人可以解释一下
return *this;
和 setNum
方法中 displayNum
的含义吗?为什么我们返回当前实例的引用?
为什么我们使用引用(
MyClass&
)作为这些方法的返回类型?返回引用而不是值或指针有什么优点?
.
我尝试过在线查找资源,但我仍然很难完全掌握这些概念。任何解释或见解将不胜感激
我无法告诉你原因。这就是它的写法。然而,它允许您对同一对象进行链接操作。
如果方法
setNum
和 displayNum
是 void
方法,则代码必须如下所示:
MyClass obj;
obj.setNum(10);
obj.displayNum();
链接可以实现漂亮而简洁的代码,但正如注释链接中的一些答案所暗示的那样,它可能会使调试变得有点棘手。