C++中重写与覆写(虚函数virtual)的区别
来源:互联网 发布:人力资源现状分析知乎 编辑:程序博客网 时间:2024/06/05 00:57
class fruit
{
public:
void func()
{
printf("fruit\n");
}
virtual void vfunc()
{
printf("v fruit\n");
}
};
class apple:public fruit
{
public:
void func()
{
printf("apple\n");
}
void vfunc()
{
printf("v apple\n");
}
};
int main(int argc, char* argv[])
{
fruit* f = new apple(); //注意 f是父类指针
f->func();
f->vfunc();
return 0;
}
结果是:
fruit
v apple
例子中func采用了函数覆盖
vfunc采用了虚函数(函数重写)
当fruit类的指针指向一个apple类的对象时,func调用了父类的函数,vfunc调用了子类的函数。
如过是函数覆盖,调用成员函数时,直接调用对象指针所属类的成员函数,例子中为fruit
虚函数的情况下,调用成员函数时,调用的是指向对象的所属类的成员函数,例子中为apple
0 0
- C++中重写与覆写(虚函数virtual)的区别
- C++中重写与覆写(虚函数virtual)的区别
- c# 虚函数Virtual与重写override
- C井中virtual方法与abstract方法的区别
- C++、C#中 abstract 与 virtual关键字的区别联系
- C++、C#中 abstract 与 virtual关键字的区别联系
- C++中重载与重写函数区别及虚函数
- C++中重载与重写函数区别及虚函数
- C++中重载与重写函数区别及虚函数
- Java基础之重写(覆写)与重载区别
- Java基础之重写(覆写)与重载区别
- 关于virtual与非virtual析构函数的区别
- 析构函数virtual与非virtual的区别
- 函数重载与函数重写的区别
- java语言中方法重载overloading和方法重写(覆写)overriding的区别
- c#中abstract与virtual的区别
- c#中abstract与virtual的区别
- c#中abstract与virtual的区别
- UIView在Xib中的边框设置
- CSS的学习
- c# int Int32 Int64 的区别
- 【noip2008】传球游戏
- jquery 触发a标签点击事件,弹出页面;不被浏览器屏蔽拦截的打开窗口的方法
- C++中重写与覆写(虚函数virtual)的区别
- AFN
- Android 开发者,你真的会用textview(maxEms和maxLength)的属性吗?
- 随机查询前10条
- web测试常用的用例及知识(全(1-5))
- git冲突please move or remove before you can merge
- FileInputStream从文件中读取,FileOutputStream写入时会多写入内容
- 查看linux下的字体
- 前端性能优化方案索引