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;  
}
相关推荐
神仙别闹3 分钟前
基于QT(C++)实现(图形界面)连连看
java·c++·qt
Geoking.8 分钟前
深度理解 Java synchronized —— 从原理到实战
java·开发语言
sailing-data10 分钟前
【UI Qt】入门笔记
开发语言·qt·ui
NZT-4811 分钟前
C++基础笔记(三)链表list
c++·笔记·链表
Salt_072812 分钟前
DAY32 类的定义和方法
开发语言·python·算法·机器学习
未来影子19 分钟前
Java领域构建Agent新杀入一匹黑马(agentscope-java)
java·开发语言·python
不会写DN21 分钟前
JavaScript call、apply、bind 方法解析
开发语言·前端·javascript·node.js
阿里嘎多学长21 分钟前
2025-12-12 GitHub 热点项目精选
开发语言·程序员·github·代码托管
goxingman23 分钟前
实体类上关于时间字符串和时间字段转换涉及注解分析
java·开发语言
_Voosk23 分钟前
C指针存储字符串为何不能修改内容
c语言·开发语言·汇编·c++·蓝桥杯·操作系统