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;  
}
相关推荐
郝学胜-神的一滴几秒前
Linux系统调用中断机制深度解析
linux·运维·服务器·开发语言·c++·程序人生
古城小栈1 分钟前
Go 语言 WebAssembly 原生支持:前后端一体化开发详解
开发语言·golang·wasm
悟能不能悟4 分钟前
JAVA 中dao层的实体应该属于哪个层次VO,还是DTO,或者其他
java·开发语言
二狗哈8 分钟前
Cesium快速入门17:与entity和primitive交互
开发语言·前端·javascript·3d·webgl·cesium·地图可视化
chenyuhao20248 分钟前
Linux系统编程:Ext文件系统
linux·运维·服务器·开发语言·网络·c++·后端
hd51cc1 小时前
MFC运行原理
c++·mfc
沐知全栈开发1 小时前
C 标准库 - <locale.h>
开发语言
老毛肚1 小时前
Java两种代理模式详解
java·开发语言·代理模式
小此方1 小时前
Re:从零开始学C++(二)基础精讲·中篇:引用
开发语言·c++·底层
天赐学c语言1 小时前
12.13 - 岛屿数量 && C语言中extern关键字的作用
c++·算法·leetcode