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;  
}
相关推荐
cui_ruicheng1 分钟前
C++ 多态详解(上):概念与语言机制
开发语言·c++
fpcc3 分钟前
并行编程实战——CUDA编程的其它Warp函数
c++·cuda
java1234_小锋5 分钟前
Java高频面试题:说说Redis的内存淘汰策略?
java·开发语言·redis
hope_wisdom6 分钟前
C/C++数据结构之用链表实现队列
c语言·数据结构·c++·链表·队列
podoor7 分钟前
php版本升级后page页面别名调用出错解决方法
开发语言·php·wordpress
Hx_Ma1611 分钟前
播放器逻辑
java·开发语言
lpfasd12313 分钟前
Markdown 导出 Word 文档技术方案
开发语言·c#·word
busideyang14 分钟前
MATLAB vs Rust在嵌入式领域的角色定位
开发语言·matlab·rust
ghie909014 分钟前
蚁群全局最优算法:原理、改进与MATLAB实现
开发语言·算法·matlab
’长谷深风‘16 分钟前
线程函数接口和属性
c语言·开发语言·线程·进程·软件编程