博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++虚函数
阅读量:6924 次
发布时间:2019-06-27

本文共 672 字,大约阅读时间需要 2 分钟。

    C++虚函数工作原理:声明虚函数的类中会有一个隐藏变量(所以会多4个字节),主要指向虚函数地址的表。如果子类没有重写父类的虚函数,子类中的虚函数地址表中该虚函数地址跟父类一样,如果重写了父类的虚函数,则该虚函数地址则为新的。如果一个函数没有申明为虚函数,编译器会进行静态联编,如果改行申明为虚函数,编译器则进行动态联编。所以在程序运行时,发现调用的函数是虚函数时,会在对象的虚函数表中查找该函数的地址。

 看以下例子:

#include
using namespace std;class A{public: void Print(){cout<<"A"<

 一个函数的析构函数最好申明为虚函数,不然很有可能导致资源泄露

#include
#include
using namespace std;class A{public: A(){cout<<"A"<

 C++ 子类写父类的函数叫重写,即使参数不一样或者名字不一样,都叫重写。父类如果有3个函数,void fun(),void fun(int) ,void fun(int,int);子类即使重写了void fun()这一个函数,父类的void fun(int),void fun(int,in)在子类中也被隐藏,所以每次子类重写父类函数时,需要把父类所有重载的函数都要写一遍。

转载于:https://www.cnblogs.com/jlyg/p/10328578.html

你可能感兴趣的文章
Linux命令详解 -- ls
查看>>
python while 基础练习
查看>>
MySQL增删改查--之增
查看>>
cpp命名空间
查看>>
10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 ne
查看>>
互联网创业的准备——数据库:硬盘iops、mysql
查看>>
深入了解硬盘
查看>>
通过虚拟机VMware来练习安装ESXi
查看>>
Mybatis深度整合Mysql的Json字段
查看>>
程序清单3.2_print1.c_程序_《C Primer Plus》P37
查看>>
文档注释
查看>>
自然语言处理之:搭建基于HanLP的开发环境(转)
查看>>
linux 系统 UDP 丢包
查看>>
AECC 2015绿色版下载|adobe after effects cc 2015绿色版下载 v1
查看>>
Ansible之playbook(剧本)介绍与案例分析
查看>>
IPFS矿机你需要看懂的五大元素
查看>>
截图留存
查看>>
web复习day03:request
查看>>
LVS负载均衡
查看>>
RabbitMQ使用
查看>>