我有头文件“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”时,调用的是 B 类的 Foo 函数而不是 A 类。但是,B 类的 Foo 函数没有声明为虚拟函数。谁能详细说明这个??