楼主的给的代码优点小问题,已修正,能跑了
class x
{
public:
virtual void f(){ cout << "x" << endl; }
};
class a :public x
{
public:
virtual void f(){ cout << "a" << endl; }
};
class b :public x
{
public:
virtual void f(){ cout << "b" << endl; }
};
class d :public a
{
public:
virtual void f(){ cout << "d" << endl; }
};
class e :public a
{
public:
virtual void f(){ cout << "e" << endl; }
};
int main()
{
vector<void*> v;
/*1\. 对于自定义类类型:
如果该类没有定义构造函数(由编译器合成默认构造函数)但有虚函数,
那么class c = new class;和class c = new class();一样,都会调用默认构造函数。
*/
v.push_back(new d);
v.push_back(new a);
v.push_back(new x);
v.push_back(new b);
v.push_back(new e);
for (int i = 0; i<v.size(); i++)
{
static_cast<b*>(v[i])->f();
}
return 0;
}