理解 C++ 中的 `this` 指针、`return *this` 和引用

问题描述 投票:0回答:1

我目前正在学习 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;

}

具体来说,我有以下问题:

  1. 在此上下文中

    this
    指针的用途是什么?它是如何运作的?

  2. 有人可以解释一下

    return *this;
    setNum
    方法中
    displayNum
    的含义吗?为什么我们返回当前实例的引用?

  3. 为什么我们使用引用(

    MyClass&
    )作为这些方法的返回类型?返回引用而不是值或指针有什么优点?

.

我尝试过在线查找资源,但我仍然很难完全掌握这些概念。任何解释或见解将不胜感激

c++ c++11 c++17
1个回答
0
投票

我无法告诉你原因。这就是它的写法。然而,它允许您对同一对象进行链接操作。

如果方法

setNum
displayNum
void
方法,则代码必须如下所示:

MyClass obj;
obj.setNum(10);
obj.displayNum();

链接可以实现漂亮而简洁的代码,但正如注释链接中的一些答案所暗示的那样,它可能会使调试变得有点棘手。

© www.soinside.com 2019 - 2024. All rights reserved.