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()
der
der
base
fn()
der
p->fn(i)
私のポイントは、なぜsizeof
クラスなのbase
か、それともVTABLEポインターを使用しないのかということですder
。ここでのVTABLEポインターの要件は何ですか?4