版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/84846514
目录
基本概念
联编
就是将模块或者函数合并在一起生成可执行代码的处理过程(函数调用),按照联编所进行的阶段不同,可分为两种不同的联编方式:静态联编和动态联编。
函数调用和实现的过程
C++只有用到多态才会用到动态连编
程序员是看不出来的,只是系统内部的处理
程序在编译的时候,就知道某个类调用的是哪个函数
静态联编:编译阶段就将函数实现与函数调用关联起来;
动态连编:在程序执行阶段才将函数实现和调用关联;
注意:动态联编是针对C++的多态,C语言全部都是静态联编;
举个栗子
静态联编:
#include <iostream>
using namespace std;
class A{
public:
void fun(){
cout << "Class A fun() called" << endl;
}
};
void main(){
A a;
a.fun();
getchar();
}
程序运行截图如下:
动态联编
源码如下:
#include <iostream>
using namespace std;
class Base{
public:
virtual void fun(){
cout << "Class Base fun() called" << endl;
}
virtual ~Base(){
cout << "~Base() called" << endl;
}
};
class SubClass: public Base{
public:
void fun(){
cout << "Class SubClass fun() called" << endl;
}
~SubClass(){
cout << "~SubClass() called" << endl;
}
};
void main(){
Base *p;
int index;
cin >> index;
switch(index){
case 1:
p = new Base;
break;
default:
p = new SubClass;
}
p->fun();
delete p;
system("pause");
}
运行截图如下: