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;  
}
相关推荐
飛6797 小时前
从 0 到 1 掌握 Flutter 状态管理:Provider 实战与原理剖析
开发语言·javascript·ecmascript
龚礼鹏7 小时前
Android应用程序 c/c++ 崩溃排查流程
c语言·开发语言·c++
Filotimo_7 小时前
在java开发中,什么是JSON格式
开发语言·json
咕噜签名-铁蛋8 小时前
云服务器远程连接失败?
开发语言·php
~无忧花开~8 小时前
Vue二级弹窗关闭错误解决指南
开发语言·前端·javascript·vue.js
老华带你飞8 小时前
在线教育|基于springboot + vue在线教育系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·后端
REDcker9 小时前
JS 与 C++ 语言绑定技术详解
开发语言·javascript·c++
June`9 小时前
C++11新特性全面解析(三):智能指针与死锁
开发语言·c++
认真敲代码的小火龙9 小时前
【JAVA项目】基于JAVA的医院管理系统
java·开发语言·课程设计
曼巴UE510 小时前
UE5 C++ 动态多播
java·开发语言