1

多重継承または仮想継承を使用していないと仮定すると、C++ 標準は、aDerived*を aに変換すると、Base*両方のポインターがまったく同じ値になることを保証しますか? たとえば、次のコードは、および/または仮想関数がsuccess()ある場合でも、常に を呼び出しますか?DerivedBase

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

1 に答える 1

2

基本クラスに仮想関数がなく、派生クラスにある場合、基本クラスにはオブジェクトに vtable ポインターが存在しないため、ポインターは異なる可能性がありDます。

于 2013-04-14T04:01:58.927 に答える