[英]Is 'this' the cpp equivalent of 'self' in python?
我在 Python 方面很有经验,现在正在学习 cpp 来加速代码。 读了一点之后, this
似乎是self
的 cpp 等价物。 我发现了一个问题,从 cpp 用户的角度解释了差异,但我想知道 python 用户的观点有什么不同。
主要区别在于您在 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; }
}
除了已经给出的答案之外,Python 中的self
只是为类方法的第一个参数选择的常规名称,该名称指的是直接调用该方法的对象本身。
在 C++ 中, this
是一个关键字,没有明确指定为非静态类成员函数的参数,但会自动将调用此类函数的实例作为指针引用。
这意味着this
不是对对象的引用,而是指向它的指针。 所以
this.member = 4;
不可能。 必须首先取消引用this
才能从指针获取对对象的引用:
this->member = 4;
或(不常见)
(*this).member = 4;
除了一些与模板中的名称查找相关的例外,成员的名称自动引用当前实例成员,如另一个答案中所述,因此可以删除this->
,通常:
member = 4;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.