0

我在 Python 方面经验丰富,现在正在学习 cpp 以加快代码速度。看了一点this似乎是cpp相当于self. 我发现了一个问题,从 cpp 用户的角度解释了差异,但我想知道 python 用户的观点有什么不同。

4

2 回答 2

2

主要区别在于您在 C++ 中大多不需要this,因为在定义成员和引用它之间存在语法上的区别。

对比

Python:

class Foo:
    def __init__(self):
        self._bar = 42

    def baz(self):
        return self._bar += 1

C++:

class Foo {
    int bar = 42;
public:
    int baz() { return bar += 1; }
}
于 2020-02-26T14:28:10.640 回答
1

除了已经给出的答案之外,self在 Python 中只是为类方法的第一个参数选择的常规名称,它指的是直接调用该方法的对象本身。

在 C++ 中,this是一个关键字,它没有显式指定为非静态类成员函数的参数,但会自动将调用此类函数的实例称为指针

这意味着this不是对对象的引用,而是指向它的指针。所以

this.member = 4;

不可能。this必须首先取消引用才能从指针中获取对对象的引用:

this->member = 4;

或(不常见)

(*this).member = 4;

除了与模板中的名称查找有关的一些例外情况外,成员的名称自动引用当前实例成员,如另一个答案中所述,因此this->可以删除,通常:

member = 4;
于 2020-04-16T00:18:52.053 回答