C++虚函数问题 是关于const虚函数的 我们没教过啊、、

#include<iostream>usingnamespacestd;classAnimal{public:virtualchar*getType()const{ret... #include<iostream>
using namespace std;
class Animal {
public:
virtual char* getType() const { return "Animal"; }
virtual char* getVoice() const { return "Voice"; }
};
class Dog : public Animal {
public:
char* getType() const { return "Dog"; }
char* getVoice() const { return "Woof"; }
};
void type(Animal& a) { cout<<a.getType(); }
void speak(Animal a) { cout<<a.getVoice(); }
int main() {
Dog d; type(d); cout<<"speak"; speak(d); cout<<endl;
return 0;
}

为什么输出时 DogspeakVoice
展开
 我来答
lqllqllsl
2010-09-08 · 超过31用户采纳过TA的回答
知道答主
回答量:184
采纳率:0%
帮助的人:90.2万
展开全部
Dog 是 Animal的派生类 结合赋值兼容和虚函数的知识 可以知道 调用type时候 a指向的是d 由于getType()是虚函数 所以a.gettype是派生类的 speak呢参数是Animal对象 a既然是Animal当然访问 本身的GetVoice
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式