文章目录
1、引用和指针的区别
A:定义一个引用变量和定义一个指针变量的汇编指令一模一样,区别是引用变量必须要初始化,指针没有强制要求。
B:通过应用变量修改内存的值和通过指针修改指向内存的值,汇编指令一样,区别是引用更加安全,而指针有可能解引用一个空指针或野指针。
C:指针有一级和多级,而引用只有一级的引用
2、解释静态绑定和动态绑定
静态绑定:指的是函数调用,在编译期间就已经是明确的函数调用。
动态绑定:指的是通过指针或者引用,调用同名覆盖方法,运行时从指定的对象头部取vfptr,间接访问vftable,在vftable中取虚函数的地址,进行函数调用,用指针或者引用调用virtual函数一定会发生动态绑定
3、解释什么是多态
动态的多态:在继承结构中,用基类的指针或者引用,指向从该基类继承的派生类对象,调用派生类和基类的同名覆盖方法,基类指针指向哪个派生类对象,就会调用哪个派生类对象的方法,这个就叫做动态的多态,其本质原理就是动态绑定。
静态的多态:主要指的是函数重载和模板,重载方法的调用和模板的实例化都是在编译阶段就要确定好的。