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;  
}
相关推荐
yzp-10 小时前
Java NIO Reactor 模式
java·开发语言·nio
XiaoHu020710 小时前
C++特殊类设计与类型转换
开发语言·c++
AM越.10 小时前
Java设计模式超详解--状态设计模式
java·开发语言·设计模式
小肖爱笑不爱笑10 小时前
2025/12/16 HTML CSS
java·开发语言·css·html·web
刘孬孬沉迷学习10 小时前
GTP协议
开发语言·学习·5g·php·信息与通信
章豪Mrrey nical10 小时前
数组扁平化的详解
开发语言·前端·javascript·面试
柒儿吖10 小时前
官方适配完的命令行ruby在鸿蒙PC上的使用方法
开发语言·ruby·harmonyos
报错小能手10 小时前
STL——set
开发语言·c++
一勺菠萝丶10 小时前
执行 install.sh 报错 `env: ‘bash\r‘: No such file or directory` 怎么解决?
开发语言·bash