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