1
base(B
)クラスのポインタが(polymorphism-ly)基本クラス?インスタンス(Base *)が親関数(Base :: f())をオーバーライドするかどうかをチェックする
class B{
public: int aField=0;
virtual void f(){};
};
class C : public B{
public: virtual void f(){aField=5;};
};
class D: public B{};
int main() {
B b;
C c;
D d;
std::vector<B*> bs;
bs.push_back(&b);
bs.push_back(&c);
bs.push_back(&d);
for(int n=0;n<3;n++){
//std::cout<<(bs[n]->f)==B::f<<std::endl;
//should print "true false true"
}
}
私はB::f
に対して関数ポインタbs[n]->f
のアドレスを比較してみましたが、それは互換性のないです。
私はこの質問が重複する可能性があることを感じて、私は(申し訳ありません)を見つけることができません。
ここで何をしようとしていますか?これは好奇心のため、[X Yの問題](https://meta.stackexchange.com/q/66377/218012) – Justin
@Justinのようです。私はそれが可能かどうかを知りたいと思う...それは最適化のいくつかのまれなケース(私はそれが必要になる場合)に役立つかもしれません。 – cppBeginner
質問はあまり意味がありません。 'bs [n] - > f 'は常に仮想呼び出しです –