在学校学习C++时,我们从未真正谈过如何建立图书馆,所以对我的基本理解感到遗憾.从我在网上看到的,似乎一个库只是已编译的代码集合,然后有一个.h文件列出了该库中可访问的函数.
例如,当我#include <cmath>现在可以调用sin(x)而无需访问cmath代码来编译它.我的问题是,这是否适用于包含数据的类.
所以我可以创建一个库
//AccumulatorLibrary.h
class Accumulator
{
public:
int num;
int increment() {num++};
void otherFunctions(); //otherFunctions defined in the .lib file
}
Run Code Online (Sandbox Code Playgroud)
然后打电话给它
//Main
#include "AccumulatorLibrary.h"
#include <stdio>
int main()
{
Accumulator A(0); //initalize num to 0
Accumulator B(7); //initalize num to 7
cout<<A.increment;
cout<<B.increment;
cout<<A.increment;
}
Run Code Online (Sandbox Code Playgroud)
并获得输出1 8 2?
总之,如果我弄清楚如何将一堆类放入库文件中,我可以访问我想要的任何数据,只要该数据在.h文件中具有访问功能吗?
或者一个更基本的问题,做一个.h和.lib文件的工作方式与普通的c ++代码完全相同,只是在你使用它时不需要编译,而且你无法访问.lib文件中的代码?
小智 5
从我在网上看到的,似乎一个库只是已编译的代码集合,然后有一个.h文件列出了该库中可访问的函数.
正确.
我的问题是,这是否适用于包含数据的类.
确实如此.许多C++库公开类并在库中预编译其代码.
或者更基本的问题,.h和.lib文件的工作方式与常规c ++代码完全相同,只是在使用它时不必编译它...
等等..h文件仍然包含C++代码(声明,有时甚至是内联实现)..lib文件是动态链接库.它们是C++源文件的编译(和链接)的结果.
...并且您无权访问.lib文件中的代码?
您可以访问它:使用反汇编程序打开它.它不再是C++了.
| 归档时间: |
|
| 查看次数: |
1937 次 |
| 最近记录: |