class base {
public:
void virtual fn(int i) {
cout << "base" << endl;
}
};
class der : public base{
public:
void fn(char i) {
cout << "der" << endl;
}
};
int main() {
base* p = new der;
char i = 5;
p->fn(i);
cout << sizeof(base);
return 0;
}
ここで、クラスで定義された関数fnのシグニチャは、関数名は同じですが、クラスで定義されたbase関数のシグニチャとは異なります。したがって、クラスで定義された関数はクラス関数を非表示にします。したがって、fnのクラス バージョンを呼び出しで呼び出すことはできません。それは結構です。fn()derderbasefn()derp->fn(i)
私のポイントは、なぜsizeofクラスなのbaseか、それともVTABLEポインターを使用しないのかということですder。ここでのVTABLEポインターの要件は何ですか?4