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;  
}
相关推荐
彦楠6 分钟前
指定Tomcat运行的JDK地址
java·开发语言·tomcat
csbysj20208 分钟前
Rust 组织管理
开发语言
清水白石00812 分钟前
构建企业级 Python 服务:配置、日志、指标与追踪的稳健之道
开发语言·python·elasticsearch
lsx20240612 分钟前
特效(Effect)
开发语言
那小子、真烦21 分钟前
Hermes Agent Chat 方法分析
java·开发语言
爱喝水的鱼丶24 分钟前
SAP-ABAP:变量、常量、结构与内表声明(10篇博客合集) 第六篇:ABAP 7.40+新特性:声明语法的简化写法与兼容注意事项
运维·服务器·开发语言·学习·算法·sap·abap
上海合宙LuatOS25 分钟前
Air8000低功耗指南
开发语言·物联网·php·lua
happymaker062634 分钟前
SpringBoot使用Thymeleaf模板引擎,前端的基本语法
开发语言·python
01_ice36 分钟前
Java抽象类和接口
java·开发语言
RuiZN1 小时前
UE5 UObject类详解
c++·ue5