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;  
}
相关推荐
layman05283 分钟前
在python中受限于GIL,进程中只允许一个线程处于允许状态,多线程无法充分利用CPU多核
开发语言·python
我不会插花弄玉3 分钟前
类与对象-下【由浅入深-C++】
c++
捧 花5 分钟前
Go Web 开发流程
开发语言·后端·golang·restful·web·分层设计
南猿北者6 分钟前
go语言基础语法
开发语言·后端·golang
Tandy12356_9 分钟前
手写TCP/IP协议栈——ARP超时重新请求
c语言·c++·网络协议·计算机网络
CC.GG20 分钟前
【Qt】Qt初识
开发语言·qt
水天需01025 分钟前
VS Code C++ 环境配置及 HelloWorld 程序
c++
初圣魔门首席弟子26 分钟前
第六章、[特殊字符] HTTP 深度进阶:报文格式 + 服务器实现(从理论到代码)
linux·网络·c++
永远都不秃头的程序员(互关)29 分钟前
查找算法深入分析与实践:从线性查找到二分查找
数据结构·c++·算法
Sunsets_Red30 分钟前
二项式定理
java·c++·python·算法·数学建模·c#