一、
1 静态链接库的优点
(1) 代码装载速度快,执行速度略比动态链接库快;
(2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。
2 动态链接库的优点
(1) 更加节省内存并减少页面交换;
(2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性;
(3) 不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数;
(4)适用于大规模的软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试。
3 不足之处
(1) 使用静态链接生成的可执行文件体积较大,包含相同的公共代码,造成浪费;(2) 使用动态链接库的应用程序不是自完备的,它依赖的DLL模块也要存在,如果使用载入时动态链接,程序启动时发现DLL不存在,系统将终止程序并给出错误信息。而使用运行时动态链接,系统不会终止,但由于DLL中的导出函数不可用,程序会加载失败;速度比静态链接慢。当某个模块更新后,如果新模块与旧的模块不兼容,那么那些需要该模块才能运行的软件,统统撕掉。这在早期Windows中很常见。
二、
class Student
{
public:
// 静态成员函数只能使用静态成员变量
static void show()
{
// printf ("id = %d, name = %s\n", _id, _name);
printf ("num = %d\n", num);
}
private:
int _id;
char _name;
public:
// 静态成员变量不是对象的属性,是类的属性,不属于单个对象
// 而是所有对象所共享的一个变量
// 静态成员变量必须在类的外部进行初始化
static int num;
};
// 静态成员变量必须在类的外部进行初始化int Student::num = 10;
int main()
{
Student s1, s2, s3;
// 静态成员使用:
// 1、通过对象来使用
s1.num = 123;
cout << s2.num << endl;
// 2、通过类名来使用
Student::num = 456;
cout << s3.num << endl;
// 静态成员函数
s3.show();
Student::show();
return 0;
}
C++学习笔记(八)静态链接库、动态链接库与静态变量
最新推荐文章于 2021-10-11 00:28:37 发布