静态类型&动态类型
何时使用:使用存在继承关系的类型时,必须将一个变量或其他表达式的静态类型与该表达式表示对象的动态类型区分开来
静态类型:表达式的静态类型在编译时总是已知的,它是变量声明时的类型或表达式生成的类型
动态类型:动态类型直到运行时才可知,(变量或)表达式表示的内存中的对象的类型
如果表达式既不是引用也不是指针,则它的动态类型永远与静态类型一致。
如当print_total调用net_price时:double ret = item.net_price(n);,我们知道item的静态类型是Quote&,它的动态类型则依赖于item绑定的实参(即动态类型知道运行时调用print_total才知道),若我们传递一个Bulk_quote对象给print_total,则item的静态类型将与它的动态类型不一致(此时item的静态类型是Quote&,而相应的动态类型是Bulk_quote)