关于虚函数使用的一个简单的问题

stunix 2011-05-23 01:27:07
最近在看C++编程思想第一卷,昨天对15章的一个开头例子上机练习。结果结果跟预想的不一样。
基类为Instrument,有一个虚函数play。
子类Wind,重写了基类的play。
实例化了子类之后,输出结果确为基类的play,
通过vs2008单步调试之后发现在实例化子类Wind的时候 实际上是实例的Instrument类。
小弟刚学C++不久,折磨了一天了也没弄出个所以然来,现将代码发出来让各位高手看看,求各位给解答下

#include <iostream>
using namespace std;
enum note {middleC,Csharp,Cflat};

class Instrument{
public:
virtual void paly(note) const {
cout << "Instrument::play" <<endl;
}
};

class Wind : public Instrument {
public:
void play(note) const{
cout << "wind::play" << endl;
}
};

void tune(Instrument& i){
i.paly(Cflat);
}

int main(){
Wind flute; //这里却实例的是Instrument,实在不懂
tune(flute);
//Instrument* p=&flute;
//p->play(Cflat);
}
...全文
119 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
stunix 2011-05-23
  • 打赏
  • 举报
回复
杯具的我把基类函数和下面的函数都写错了 难过不会调用子类的了
冻结 2011-05-23
  • 打赏
  • 举报
回复
+2
[Quote=引用 3 楼 q191201771 的回复:]

+1
引用 1 楼 ljt3969636 的回复:

virtual void paly(note) cons
void play(note) const
注意虚函数名都不一样~·
[/Quote]
就想叫yoko 2011-05-23
  • 打赏
  • 举报
回复
+1[Quote=引用 1 楼 ljt3969636 的回复:]

virtual void paly(note) cons
void play(note) const
注意虚函数名都不一样~·
[/Quote]
KID_coder 2011-05-23
  • 打赏
  • 举报
回复
virtual void paly(note) const {

play

LZ拼写。。。
ljt3969636 2011-05-23
  • 打赏
  • 举报
回复
virtual void paly(note) cons
void play(note) const
注意虚函数名都不一样~·

64,670

社区成员

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

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