ヘッダーファイル「testcode.h」があります
#ifndef TESTCODE_H
#define TESTCODE_H
class A
{
public:
A();
~A();
virtual void Foo();
public:
int mPublic;
protected:
int mProtected;
private:
int mPrivate;
};
class B : public A
{
public:
B();
~B();
void Foo();
};
#endif // TESTCODE_H
とソースファイル
#include "TestCode.h"
int main(int argc, char* argv[])
{
A* b = new B();
b->Foo();
b->mPublic = 0;
b->mProtected = 0;
b->mPrivate = 0;
delete b;
return 0;
}
ここで、「b->Foo」を呼び出しているときに、クラス A の代わりにクラス B の Foo 関数が呼び出されることを知りたいのですが、クラス B の Foo 関数は virtual として宣言されていません。誰でもこれについて詳しく説明できますか??