对virtual又有些迷惑了
#include<iostream>
#include<string>
using namespace std;
class A
{
public:
void fA() { cout<<"A::fA"<<endl; }
virtual void vfA() { cout<<"A::vfA"<<endl; }
};
class B:public A
{
public:
void fB() { cout<<"B::fB"<<endl; }
void vfA() { cout<<"B::vfA"<<endl; }
};
class C:public B
{
void fC() { cout<<"C::fC"<<endl; }
void vfA() { cout<<"C::vfA"<<endl; }
};
int main()
{
A *p=new C;
p->vfA();
system("pause");
return 0;
}
int main()
{
A a1, a2;
B b1, b2;
C c1, c2;
A* p[6] = {&a1, &a2, &b1, &b2, &c1, &c2};
for (int i = 0; i < 6; ++i)
{
p[i]->vfA();
}
system("pause");
return 0;
}
C::vfA
Press any key to continue
//不建议的写法:
A* p = new C;
//建议的写法:
A* p = new C();