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;  
}
相关推荐
小羊失眠啦.8 分钟前
用 Rust 实现高性能并发下载器:从原理到实战
开发语言·后端·rust
避避风港16 分钟前
Java 抽象类
java·开发语言·python
cookies_s_s25 分钟前
C++20 协程
linux·开发语言·c++
石油人单挑所有40 分钟前
C语言知识体系梳理-第一篇
c语言·开发语言
hetao17338371 小时前
2025-11-13~14 hetao1733837的刷题记录
c++·算法
把csdn当日记本的菜鸡1 小时前
js查缺补漏
开发语言·javascript·ecmascript
hansang_IR1 小时前
【题解】洛谷 P2476 [SCOI2008] 着色方案 [记搜]
c++·算法·记忆化搜索
lkbhua莱克瓦241 小时前
Java练习——数组练习
java·开发语言·笔记·github·学习方法
武子康1 小时前
Java-168 Neo4j CQL 实战:WHERE、DELETE/DETACH、SET、排序与分页
java·开发语言·数据库·python·sql·nosql·neo4j
AA陈超1 小时前
ASC学习笔记0010:效果被应用时的委托
c++·笔记·学习