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;  
}
相关推荐
代码or搬砖20 分钟前
HashMap源码
开发语言·python·哈希算法
星辰_mya23 分钟前
reids哨兵集群与选主
java·开发语言
星轨初途24 分钟前
郑州轻工业大学2025天梯赛解题
c++·经验分享·笔记·算法·链表·剪枝
期待のcode25 分钟前
Java的多态
java·开发语言
点云SLAM1 小时前
C++ 引用折叠(Reference Collapsing)和示例讲解说明
数据结构·c++·标准算法·完美转发·代码性能优化·c++ 引用折叠·typedef / using
证能量少女1 小时前
2026大专Java开发工程师,考什么证加分?
java·开发语言
芒克芒克1 小时前
Java集合框架总结(面试八股)
java·开发语言·面试
chenyuhao20241 小时前
Linux网络编程:HTTP协议
linux·服务器·网络·c++·后端·http·https
ejjdhdjdjdjdjjsl2 小时前
C#文件流操作技巧
java·开发语言·spring
Minecraft红客2 小时前
ai_dialogue_framework项目1.0(纯原创)
c++·测试工具·电脑