1

假设我没有使用多重继承或虚拟继承,C++ 标准是否保证如果我将 a 转换Derived*为 aBase*两个指针将具有完全相同的值?例如,以下代码是否总是调用success(),即使Derived和/或Base具有虚函数?

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

1 回答 1

2

如果基类没有虚函数而派生类有,则指针可能会有所不同,因为基类的D对象中不存在 vtable 指针。

于 2013-04-14T04:01:58.927 回答