- 将源代码中的函数调用解释为 执行特定的函数代码块 被称为函数名联编(binding)
- C++因为有函数重载的缘故,编译器需要查看函数参数以及函数名才能确定使用哪个函数
- 在编译过程中进行联编被称为 静态联编
- 虚函数,使得编译器在编译时不能确定该使用哪一个函数,既不知道使用基类的还是派生类的,所以必须生成能够在程序运行时选择正确的虚方法代码,称为动态联编。
指针或引用类型的兼容性
- C++不允许将一种类型地址赋给另一种类型指针
- 指向基类的引用或指针 可以引用派生类对象
- 派生类的引用或指针转换为基类引用或指针 被称为向上强制转换,且向上强制转换是可传递的,既派生类的派生类也可以转换为基类的
- 基类指针或引用转换为派生类引用或指针 称为向下强制转换,需要显示类型转换。
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(),但按引用或指针传递将进行隐式的向上转换。