私は C++ を試していましたが、以下のコードが非常に奇妙であることがわかりました。
class Foo{
public:
virtual void say_virtual_hi(){
std::cout << "Virtual Hi";
}
void say_hi()
{
std::cout << "Hi";
}
};
int main(int argc, char** argv)
{
Foo* foo = 0;
foo->say_hi(); // works well
foo->say_virtual_hi(); // will crash the app
return 0;
}
vtable ルックアップが必要であり、有効なオブジェクトでしか機能しないため、仮想メソッド呼び出しがクラッシュすることはわかっています。
次の質問があります
say_hi
非仮想メソッドは NULL ポインターでどのように機能しますか?- オブジェクトはどこ
foo
に割り当てられますか?
何かご意見は?