在上篇文章https://blog.csdn.net/Quellaaa/article/details/83989676中还留下了待补充的知识点——动态加载dll的类。有经验的前辈指点道:尽量用动态链接方式加载dll,因为静态链接方式加载dll要加入lib,当工程庞大时太多lib会加重工程负担,并可能会出现redefine问题。
因此本文章关键词为:动态链接加载、dll、接口类。
一、接口类
1. 接口类的定义
所谓的接口,即将内部实现细节封装起来,外部用户用过预留的接口可以使用接口的功能而不需要知晓内部具体细节。C++中,通过类实现面向对象的编程,而在基类中只给出纯虚函数的声明,然后在派生类中实现纯虚函数的具体定义的方式实现接口,不同派生类实现接口的方式也不尽相同,从而实现多态。
接口类就是只提供接口不提供实现的类,就是接口类,接口类和抽象类对C++而言,没有什么区别。
2. 接口类的特点
1)子类来实现接口类中没有实现的所有接口。
2)接口方法前面有virtual关键词修饰,并且等于0。
注意!析构函数一定记得用virtual修饰,但构造函数不能用virtual修饰,原因如下:
虚函数调用是在部分信息下完成工作的机制,允许我们只知道接口而不知道对象的确切类型。 要创建一个对象,你需要知道对象的完整信息。 特别是,你需要知道你想要创建的确切类型。 因此,构造函数不应该被定义为虚函数。
3)只能被继承,不能独自生成对象。
3. 接口类的目的和优缺点
目的:降低使用接口的用户直接操作数据造成不必要错误的可能性。
优点:将模块的依赖性降到了最低。举个例