静态类型&动态类型

Posted GGBeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态类型&动态类型相关的知识,希望对你有一定的参考价值。

何时使用:使用存在继承关系的类型时,必须将一个变量或其他表达式的静态类型与该表达式表示对象的动态类型区分开来

静态类型:表达式的静态类型在编译时总是已知的,它是变量声明时的类型或表达式生成的类型

动态类型:动态类型直到运行时才可知,(变量或)表达式表示的内存中的对象的类型

如果表达式既不是引用也不是指针,则它的动态类型永远与静态类型一致。

如当print_total调用net_price时:double ret = item.net_price(n);,我们知道item的静态类型是Quote&,它的动态类型则依赖于item绑定的实参(即动态类型知道运行时调用print_total才知道),若我们传递一个Bulk_quote对象给print_total,则item的静态类型将与它的动态类型不一致(此时item的静态类型是Quote&,而相应的动态类型是Bulk_quote)

以上是关于静态类型&动态类型的主要内容,如果未能解决你的问题,请参考以下文章

静态分派&动态分派

静态分派&动态分派

静态分派&动态分派

多态&虚函数

动态语言静态语言及动态语言的“鸭子类型“

动态语言,静态语言,强类型定义语言,弱类型定义语言