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

目录

 

基本概念

举个栗子


 

基本概念

联编 

就是将模块或者函数合并在一起生成可执行代码的处理过程(函数调用),按照联编所进行的阶段不同,可分为两种不同的联编方式:静态联编和动态联编。
函数调用和实现的过程
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");
}

运行截图如下:

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值