c++虚函数

虚函数使用目的是可以通过父类访问子类函数 ,创建一个父类可以调用子类同名函数(先通过指针将一个父类指针指向子类 ),使用virtual关键字修饰父类虚函数。

cpp 复制代码
 
#include<iostream>  
using namespace std;  
  
class A  
{  
public:  
    void foo()  
    {  
        printf("1\n");  
    }  
    virtual void fun()  //添加virtual表示该函数为虚函数,通过指针指向子类时会调用子类同名函数
    {  
        printf("2\n");  
    }  
};  
class B : public A  
{  
public:  
    void foo()  //隐藏:派生类的函数屏蔽了与其同名的基类函数
    {  
        printf("3\n");  
    }  
    void fun()  //多态、覆盖
    {  
        printf("4\n");  
    }  
};  
int main(void)  
{  
    A a;  
    B b;  
    A *p = &a;  //父类指针指向父类对象
    p->foo();  //输出1
    p->fun();  //输出2
    p = &b;      //父类指针指向子类对象
    p->foo();  //取决于指针类型,输出1
    p->fun();  //父类该函数为虚函数,所以会调用子类该同名函数,输出4,体现了多态
    return 0;  
}
相关推荐
wht658710 分钟前
Linux--基本指令
linux·运维·服务器·c语言·开发语言·jvm·c++
无名小小卒11 分钟前
三小时快速上手TypeScript,TS速通教程(上篇、中篇、下篇、附加篇)
开发语言·前端·typescript
秋雨凉人心23 分钟前
Webpack和GuIp打包原理以及不同
开发语言·前端·javascript·webpack·gulp
john_hjy24 分钟前
4. 数据结构: 对象和数组
java·开发语言·前端
一颗去去25 分钟前
【JavaScript】数组函数汇总
开发语言·javascript
我不爱机器学习30 分钟前
python环境配置问题(个人经验)
开发语言·python
BYSJMG31 分钟前
基于Java的停车场管理微信小程序 停车场预约系统【源码+文档+讲解】
java·开发语言·spring boot·微信小程序·小程序·课程设计·毕设
liuyunluoxiao35 分钟前
普通二叉搜索树的模拟实现【C++】
c++
潘潘潘潘潘潘潘潘潘潘潘潘38 分钟前
【数据结构】栈和队列
开发语言·数据结构·学习方法
cdut_suye1 小时前
STL之list篇(上)初识list容器,了解其核心机制,实例化对象进行分析
开发语言·c++·学习·算法·stl·list