联编的概念 在C++中,联编(binding)就是使一个计算机程序的不同部分彼此关联的过程.在这个过程中对将每个函数调用分配内存地址,并且对外部访问也分配正确的内存地址,根据进行联编所处阶段的不同,可以分为两种不同的联编方法:静态联编和动态联编(滞后联编).在编译阶段决定执行哪个同名的被调用函数,称为静态联编.静态联编在编译阶段就必须了解所有的函数或模块执行所需要检测的信息,它对函数的选择是基于指向对象的指针(或者引用)的类型.反之在编码阶段不能决定执行哪个同名的被调用函数,只在执行阶段才能根据地要处理的对象类型来决定执行哪个类的成员函数,这称为动态联编.动态联编对成员函数的选择不是基于指针或引用,而是基于对象类型,针对不同的对象类型将作出不同的编译结果.当涉及到多态性和虚函数时就应该使用动态联.动态联编必须包括以下方面:成员函数必须申明为virtual如果基类中申明了为虚函数,则派生类中不必再申明。调用方式:通过对象的指针或引用调用成员函数;或通过成员函数调用 C++多态性机制多态性在C++里面具体表现为:通过基类指针访问派生类的函数和方法.
代码如下:
#include <iostream>
#include <typeinfo>
using namespace std;
class A
{
public:
virtual void fun(void)
{
cout << "This is class A! " <<endl;
}
};
class B : public A
{
public:
void fun(void)
{
cout << "This is class B! " <<endl;
}
};
int main(void)
{
A aa,*p;
B bb;
p=&bb;
p-> fun();
p=&aa;
p-> fun();
return 0;
}