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;  
}
相关推荐
纵有疾風起19 分钟前
C++——类和对象(3)
开发语言·c++·经验分享·开源
Full Stack Developme27 分钟前
java.text 包详解
java·开发语言·python
文火冰糖的硅基工坊1 小时前
[嵌入式系统-135]:主流AIOT智能体开发板
开发语言·嵌入式·cpu
承渊政道2 小时前
动态内存管理
c语言·c++·经验分享·c#·visual studio
yudiandian20142 小时前
02 Oracle JDK 下载及配置(解压缩版)
java·开发语言
要加油哦~2 小时前
JS | 知识点总结 - 原型链
开发语言·javascript·原型模式
孤独得猿2 小时前
聊天室项目开发——etcd的安装和使用
linux·服务器·c++·etcd
鄃鳕2 小时前
python迭代器解包【python】
开发语言·python
new coder2 小时前
[c++语法学习]Day10:c++引用
开发语言·c++·学习
驰羽2 小时前
[GO]GORM 常用 Tag 速查手册
开发语言·后端·golang