簡體   English   中英

vptr名稱在C ++中變形了嗎?

[英]is vptr name mangled in c++?

即使有很多關於如何在C ++中處理虛函數的文章,我也無法消除一個基本的疑問。 基類變量是否覆蓋派生類的vptr變量。 ptr變量是否也被重命名?

Class Base
{
public:
    virtual void test();
};

class Derived 
{
public:
     virtual void test();
};

如果我打電話

Base b = new Derived();
b->test();

變成

(*b->vptr[<index>])(b);

索引指向vtable條目的位置。

我的疑問是這個vptr是否也被篡改了嗎?

C ++標准甚至不承認多態類中存在vptr ,因為它是實現細節,因此甚至不需要編譯器以這種方式實現虛函數。 因此,不, vptr不是保留關鍵字(我想這就是您要詢問的內容)。

您不能通過C ++語言來訪問vptr,因此請以“否”回答-沒有這樣的變量和名稱,因此也沒有其混亂:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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