1
假设我没有使用多继承或虚继承,C++标准是否保证如果我将Derived*
转换为Base*
这两个指针的值将完全相同?例如,即使Derived
和/或Base
具有虚拟功能,以下代码是否始终会呼叫success()
?如果我将派生指针转换为基指针,两个指针是否保证具有相同的值?
Derived* d = new Derived;
Base* b = d;
if (((void*)b) == ((void*)d))
success();
else
failure();
据此,原始指针不保证是相同的:http://stackoverflow.com/questions/6943892/difference-in-memory-layout-of-pointer-to-base-and-pointer- to-derived-object – maditya
指针最初可能相等,但如果某人稍后进入并对代码进行一些维护并且它们不再相同,会发生什么? –