C++静态联编与动态联编

版权声明:本文为博主原创文章,未经博主允许不得转载。 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");
}

运行截图如下:

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/84846514