C++:静态联编和动态联编(第十三章)

  1. 将源代码中的函数调用解释为 执行特定的函数代码块 被称为函数名联编(binding)
  2. C++因为有函数重载的缘故,编译器需要查看函数参数以及函数名才能确定使用哪个函数
  3. 在编译过程中进行联编被称为 静态联编
  4. 虚函数,使得编译器在编译时不能确定该使用哪一个函数,既不知道使用基类的还是派生类的,所以必须生成能够在程序运行时选择正确的虚方法代码,称为动态联编

指针或引用类型的兼容性

  1. C++不允许将一种类型地址赋给另一种类型指针
  2. 指向基类的引用或指针 可以引用派生类对象
  3. 派生类的引用或指针转换为基类引用或指针 被称为向上强制转换,且向上强制转换是可传递的,既派生类的派生类也可以转换为基类的
  4. 基类指针或引用转换为派生类引用或指针 称为向下强制转换,需要显示类型转换。
void fr(Class& rb);
void fp(Class* pt);
void fv(Class b);
int main()
{
    //假如适用show()的virtual function 
    Class c1();
    Pclass c2();
    fr(c1);     将使用Class::show 
    fr(c2);     将使用Pclass::show
    fp(c1);     将使用Class::show
    fp(c2);     将使用Pclass::show
    fv(c1);     将使用Class::show
    fv(c2);     将使用Class::show
}

按值传递导致只将Pclass对象的Class部分传递给函数fv(),但按引用或指针传递将进行隐式的向上转换。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容