假设我没有使用多重继承或虚拟继承,C++标准是否保证如果我将Derived*转换为Base*,两个指针将具有完全相同的值?例如,即使Derived和/或Base具有虚函数,以下代码是否始终调用success()?
Derived* d = new Derived;
Base* b = d;
if (((void*)b) == ((void*)d))
success();
else
failure();发布于 2013-04-14 12:01:59
如果基类没有虚函数,而派生类有虚函数,指针可能会不同,因为基类在D对象中不会有vtable指针。
https://stackoverflow.com/questions/15995469
复制相似问题