专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

C++子类覆盖基类及virtual虚拟处理

作者:黄波海   来源:本站原创   点击数:  更新时间:2014年03月07日   【字体:

#include<iostream.h>

class animal
{
public:
animal()
{
cout<<"animal construct"<<endl;
}
~animal()
{
cout<<"construct animal"<<endl;
}
virtual void breath()  //virtual定义虚函数
{
cout<<"bubble2"<<endl;
}
};
class fish:public animal  //只调用animal中的animal()
{
public:
fish()
{
// cout<<"hello world"<<endl;
}
~fish()
{
// cout<<"construct helllo world"<<endl;
}
void breath()
{   
//animal::breath();
//cout<<"fish bubble"<<endl;
}
};
void fn(animal *pan)
{
pan->breath();
}
void main()
{
fish fh;
//st.breath ();//如果子类和基类有两个同名函数,则最后用子类覆盖基类,这叫重载。
animal *pan;
pan=&fh;  //改变指针,把animal的指针用fish替换了。但是还是输出animal。若在animal前加virtual虚拟,则输出fish
fn(pan);
}

关闭窗口

相关文章