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;  
}
相关推荐
‎ദ്ദിᵔ.˛.ᵔ₎1 分钟前
STL 栈 队列
开发语言·c++
勿忘,瞬间7 分钟前
数据结构—顺序表
java·开发语言
张張40811 分钟前
(域格)环境搭建和编译
c语言·开发语言·python·ai
weixin_4235339915 分钟前
【Windows11离线安装anaconda、python、vscode】
开发语言·vscode·python
2401_8920709816 分钟前
【Linux C++ 日志系统实战】高性能文件写入 AppendFile 核心方法解析
linux·c++·日志系统·文件写对象
fzb5QsS1p17 分钟前
告别重复造轮子,Qt 快速开发脚手架
开发语言·qt·php
郭涤生19 分钟前
STL vector 扩容机制与自定义内存分配器设计分析
c++·算法
航Hang*19 分钟前
第3章:Linux系统安全管理——第2节:部署代理服务
linux·运维·服务器·开发语言·笔记·系统安全
周杰伦fans21 分钟前
C# required 关键字详解
开发语言·网络·c#
༾冬瓜大侠༿23 分钟前
vector
c语言·开发语言·数据结构·c++·算法