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;  
}
相关推荐
代码方舟6 小时前
Java后端实战:对接天远车辆过户查询API打造自动化车况评估系统
java·开发语言·自动化
麒qiqi6 小时前
从 C 基础到 ARM Linux 驱动开发:嵌入式开发核心知识点全解析
java·开发语言
寻寻觅觅☆6 小时前
东华OJ-基础题-86-字符串统计(C++)
开发语言·c++·算法
楼田莉子6 小时前
Linux学习:进程信号
linux·运维·服务器·c++·学习
D.不吃西红柿6 小时前
CPM.cmake轻量级包管理器
c++·cmake·cpm.cmake
真智AI6 小时前
用 FAISS 搭个轻量 RAG 问答(Python)
开发语言·python·faiss
绿浪19846 小时前
C#与C++高效互操作指南
c++·c#
CSDN_RTKLIB6 小时前
std::string打印原始字节查看是否乱码
c++
shilei_c6 小时前
qt qDebug无输出问题解决
开发语言·c++·算法
pop_xiaoli6 小时前
effective-Objective-C 第一章阅读笔记
开发语言·笔记·ios·objective-c·cocoa·xcode