动态联编/运行时联编和静态联编
- 联编:将一个调用函数者连接上正确的被调用函数,这一过程叫做函数联编,一般简称为联编。
- 动态联编(加virtual):预先不知道调用那个对象的函数,运行时动态的选择调用那个对象的函数。father *p=new son;//如果father函数是虚函数,p调用实际的对象,而如果father函数不是虚函数,p调用的是father的函数和变量。(如果在虚函数没有采用指针或者引用,那么就无法实现动态联编)
- 静态联编(不加virtual):运行之前就确定好了那个指针指向那个对象,而且在运行时不能改变/编译时就解决了程序中的操作调用与执行该操作代码间的关系。(所以代码在编译和运行时是一样的)
- 区别:静态联编由于对象不用对自身进行跟踪,因此速度浪费比较小。 而动态联编虽然可以动态追踪对象,灵活性比较强。但是速度浪费也比较严重。