博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态类型
阅读量:6084 次
发布时间:2019-06-20

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

动态类型与静态类型

静态类型

         是指不需要考虑表达式的执行期语义,仅分析程序文本而决定的表达式类型。静态类型仅依赖于包含表达式的程序文本的形式,而在程序运行时不会改变。通俗的讲,就是上下文无关,在编译时就可以确定其类型。

动态类型

        是指由一个左值表达式表示的左值所引用的最终派生对象的类型。例:如果一个静态类型为“类 B ”的指针p 指向一个继承于 B的类 D 的对象,则表达式 *p 的动态类型为“D”。引用按照相似规则处理。一般地讲,基类的指针和基类引用有可能为动态类型,就是说在运行之前不能够确定其真实类型。通常我们说,“基类指针指向的对象的实际/真正类型”或“基类引用所引用的对象的实际/真正类型”,就是它们的动态类型。很显然,这个动态类型是  C++ 语言通过指针和引用实现运行时多态能力的核心概念。

 

如果要静态类型与动态类型不同或者要能够进行动态绑定,都需要满足两个条件,缺一不可:

简单地说,虚函数是动态绑定的基础;动态绑定是实现运行时多态的基础。
要触发动态绑定,需满足两个条件:
(1)  只有虚函数才能进行动态绑定,非虚函数不进行动态绑定。
(2)  必须通过基类类型的引用或指针进行函数调用。
通过基类指针或基类引用做形参,当实参传入不同的派生类(或基类)的指针或引用,在函数内部触发动态绑定,从而来运行时实现多态的。
如果只是基类指针指向派生类,但是不存在虚函数,则基类的指针类型仍然与静态类型相同,是基类的指针(用typeid求动态类型)。
如果在基类中添加了虚函数,则如果基类指针指向了派生类,此时基类的指针为动态类型与所指向的派生类类型有关。

转载地址:http://jhzwa.baihongyu.com/

你可能感兴趣的文章
alpha 10
查看>>
C++中线程使用与参数传递
查看>>
VirtualBox中安装CentOS(新手教程)
查看>>
HTTP 请求头中的 X-Forwarded-For,X-Real-IP
查看>>
SDUT OJ 数据结构上机测试1:顺序表的应用
查看>>
d3----line_color_gradient 学习记录
查看>>
矩阵运算 【微软面试100题 第四十五题】
查看>>
E: Sub-process /usr/bin/dpkg returned an error code (1)
查看>>
Openshift 部署第一个应用hello-openshift
查看>>
XML学习总结
查看>>
如何利用EnteLib Unity Interception Extension 和PIAB实现Transaction
查看>>
Django中ORM介绍和字段及其参数
查看>>
[汇编学习笔记][第十七章使用BIOS进行键盘输入和磁盘读写
查看>>
【并查集合并注意!!!!】【最小生成树】
查看>>
【最大流】【HDU3572】Task Schedule
查看>>
iOS - Photo Album 图片/相册管理
查看>>
0723作业
查看>>
2016蓝桥杯 煤球数目 (代码)
查看>>
DOM&BOM
查看>>
a标签设置锚点定位div
查看>>