[英]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.