有关虚函数的问题,期待解决!

shuilongyin_00 2009-10-21 02:21:09

#include <iostream>
#include <string>
using namespace std;
class Student
{public:
Student(int,string,float);
void display();
protected:
int num;
string name;
float score;
};
Student::Student(int n,string nam,float s)
{num=n;
this->name=nam;
score=s;
}
void Student::display()
{cout<<endl<<"num:"<<num<<endl;
cout<<"name:"<<name<<endl;
cout<<"score:"<<score<<endl;
}
class Graduate:public Student
{public:
Graduate(int,string,float,float);
virtual void display(); //虚函数
private:
float pay;
};
void Graduate::display()
{cout<<endl<<"num:"<<num<<endl;
cout<<"name:"<<name<<endl;
cout<<"score:"<<score<<endl;
cout<<"pay="<<pay<<endl;
}
Graduate::Graduate(int n,string nam,float s,float p):Student(n,nam,s),pay(p){}

int main()
{Student stud1(101,"Li",87.5); //定义Student类对象stud1
Graduate grad1(2001,"Wang",98.5,563.5); //定义Graduate类对象grad1
Student *pt=&stud1; //定义指向Student类对象的指针并指向stud1
pt->display(); //调用stud1.display()函数
//用指向基类对象的指针指向派生类对象
pt=&grad1; //指针指向grad1
pt->display(); //调用grad1.display()函数
return 0;
}

初学C++,菜鸟请教!VC 6.0运行后为什么没有输出虚函数下的“pay”?
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuilongyin_00 2009-10-21
  • 打赏
  • 举报
回复
谢谢各位了!
解决了!
zdeepblue 2009-10-21
  • 打赏
  • 举报
回复
因为student的display()不是虚函数
把它改为

virtual void display();
setsailgo 2009-10-21
  • 打赏
  • 举报
回复
class Student
{public:
Student(int,string,float);
virtual void display(); //这个也应是虚的
protected:
int num;
string name;
float score;
};
taodm 2009-10-21
  • 打赏
  • 举报
回复
认真看书,看看人家例题怎么实现虚函数的。
clhposs 2009-10-21
  • 打赏
  • 举报
回复
将基类的这个函数设置为虚函数

那么所以继承该类的的子类如果重写该函数都会自动设置为virtual

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧