簡體   English   中英

如果將派生指針轉換為基本指針,兩個指針是否保證具有相同的值?

[英]If I convert a derived pointer to a base pointer, are the two pointers guaranteed to have the same value?

假設我沒有使用多重繼承或虛擬繼承,那么C ++標准是否保證如果我將Derived*轉換為Base* ,兩個指針將具有完全相同的值? 例如,即使Derived和/或Base具有虛擬功能,以下代碼也將始終調用success()嗎?

Derived* d = new Derived;
Base* b = d;
if (((void*)b) == ((void*)d)) 
    success();
else
    failure();

如果基類沒有虛擬函數,而派生類則沒有,則指針可能會有所不同,因為基類在D對象中不存在vtable指針。

暫無
暫無

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

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