c++有关虚函数的问题。高手一眼就看得出的。

这里面高手主要看一下MAIN函数就知道为什么出错了,可是我还是不知道,帮我看看,谢谢了。
#include <iostream>
using namespace std;

class person
{
public:
virtual void work();
person(){cout<<"执行Person"<<endl;}
};

void person::work()
{
cout<<"个人"<<endl;
}

class doctor:public person
{
public:
void work();
doctor()
{cout<<"执行doctor"<<endl;}
};

void doctor::work()
{
cout<<"医生"<<endl;
}

class teacher:public person
{
public:
void work();
teacher(){cout<<"执行teacher"<<endl;}
};

void teacher::work()
{
cout<<"教师"<<endl;
}

class student:public person
{
public:
void work();
student(){cout<<"执行student"<<endl;}
};

void student::work()
{
cout<<"学生"<<endl;
}

int main()
{
person a;
doctor b;
teacher c;
student d;
person *p=&a;
a->work();
return 0;
}

第1个回答  2011-05-28
person *p=&a;
a->work();

这里a仅仅是一个对象它想要调用函数得以a.work();这种方式,唯有指针才用->调用,这个程序里面p->work();就不会有问题。还有什么想问的可以追加。
第2个回答  2011-05-28
a.work();
或者
p->work();本回答被提问者采纳
第3个回答  2011-05-28
a.work()或者p->work
相似回答
大家正在搜