簡體   English   中英

'this'是python中'self'的cpp等價物嗎?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM