c++ 虚函数的作用
C++ 通过关键字virtual 声明一个虚函数,在派生类里重写这个虚函数,从而实现通过父类指针调用子类函数的目的,以实现多态。下面通过代码验证:
#include <iostream>
class Base
{public:virtual void print(){std::cout<<"virtual base print"<<std::endl;}void non_print(){std::cout<<"non virtual base print"<<std::endl;}
};class Deprived1:public Base
{public:virtual void print(){std::cout<<"virtual deprived 1 print"<<std::endl;}void non_print() //同名隐藏基类non_print{std::cout<<"non virtual deprived 1 print"<<std::endl;}};
class Deprived2:public Base
{public:virtual void print(){std::cout<<"virtual deprived 2 print"<<std::endl;}void non_print() //同名隐藏基类non_print{std::cout<<"non virtual deprived 2 print"<<std::endl;}};
int main(){Deprived1* d1 = new Deprived1(); //Deprived1 的指针Base *b =d1; b->print(); // 调用Deprived1 的printb->non_print(); // 调用 base 的printDeprived2* d2 = new Deprived2(); //指向 |Deprived2 的指针b = d2;b->print(); //调用Deprived2 的print ,通过基类指针调用不同的派生类函数,体现了多态Deprived1 d11;Base b2 = d11;b2.print(); //并没有实现多态,直接调用基类的printgetchar();return 0;
}
注意:必须通过指针来调用虚函数,才能达到预期的效果。
c++ 虚函数的作用相关推荐
- C++引入抽象基类和纯虚函数的作用和目的
为什么要引入抽象基类和纯虚函数? 主要目的是为了实现一种接口的效果. 原文链接:https://blog.csdn.net/weibo1230123/article/details/82014322 ...
- 【转载】什么是C++虚函数、虚函数的作用和使用方法
我们知道,在同一类中是不能定义两个名字相同.参数个数和类型都相同的函数的,否则就是"重复定义".但是在类的继承层次结构中,在不同的层次中可以出现名字相同.参数个数和类型都相同而功能 ...
- 在C++中用虚函数的作用是什么? 为什么要用到虚函数?
***************************************************更多精彩,欢迎进入:http://shop115376623.taobao.com******** ...
- 在C++中用虚函数的作用是什么?为什么要用到虚函数
简单地说,那些被virtual关键字修饰的成员函数,就是虚函数.虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离:用形象的语言来解释就是实现以共同 ...
- c 语言中虚方法有什么作用是什么,虚函数的作用?
定义 定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数[1] 语法:virtual 函数返回类型 函数名(参数表) {函数体;} 用途:实现多态性,通过指向派生类的 ...
- 虚函数:虚函数的作用
我们知道,在同一类中是不能定义两个名字相同.参数个数和类型都相同的函数的,否则就是"重复定义".但是在类的继承层次结构中,在不同的层次中可以出现名字相同.参数个数和类型都相同而功能 ...
- 什么是纯虚函数 纯虚函数的作用 如何定义使用纯虚函数
什么是纯虚函数 纯虚函数的作用 如何定义使用纯虚函数 一 定义: 纯虚函数是一种特殊的虚函数,它的一般格式如下: class <类名> { virtual <类型>& ...
- 关于C++中虚函数的作用
昨天去面试,面试官问道:虚函数有什么作用,我解释了半天也没解释清楚,其实说到底还是理解不够深刻,或者说简直没什么理解,连子类重写父类的普通函数和子类重写父类的虚函数的区别都不知道,真是弱爆了!!1 虚 ...
- 虚函数的作用和实现原理
文章总结自牛客网的评论. https://www.nowcoder.com/questionTerminal/1f67d4e2b6134c298e993e622181b333 1.虚函数的作用: ...
- 虚函数的作用及使用方法
转载自:http://c.biancheng.net/cpp/biancheng/view/244.html 我们知道,在同一类中是不能定义两个名字相同.参数个数和类型都相同的函数的,否则就是&quo ...
最新文章
- TVB家族剧巅峰之作,郑少秋最后的辉煌,风头却被罗嘉良抢了
- 开源 免费 java CMS - FreeCMS-标签 channelList .
- java-数组排序--冒泡排序、鸡尾酒排序、地精排序
- python输出变量代码_Python中变量的输入输出实例代码详解
- python getattr_Python中的getattr()函数详解
- K2评分方法理解实例
- Core Data数据操作
- NVolecity 处理DataTable 小记
- Android学习—7种形式的Android Dialog使用举例
- 2022年蓝桥杯基础题目合集C语言
- node.js室内装修风格选择系统毕业设计-附源码211552
- JAVAWEB实现短信验证---梦网云
- 增长黑客AB-Test系统(四)——AB-Test 最小样本量
- matlab精确重心法选址,重心法选址问题资料.ppt
- 基于 Vue 技术栈的微前端方案实践
- umts是移动还是联通_移动网络类型umts是什么意思,umts是什么网络类型-
- AMP—Rover移植
- 使用Openxal框架开发加速器模型相关的java应用程序
- 冲击图(alluvial diagram)及R实现
- 防火墙对FTP主动和被动模式的影响