关于C++链接的一些理解

无论是.h还是.cpp,都可以写声明或者实体,而且.h和.cpp的前面的名字相同不相同没有任何的影响

最终一系列要连接的程序中,必须有且只有一个源文件有main函数,然后从这个main函数开始运行

include的作用其实是跟define一样的,是纯文本替换

进行替换之后,如果替换的内容是实体,那么就可以直接运行

如果替换的内容是声明,那么必须要通过命令行告诉计算机在哪里去找这个声明的实体


比如这个文件名是

demo.h

他只是一个声明


这是一个源文件,名字是

danbao.cpp

可以看出这两个的名字完全不同,但不影响


这是我们带main函数的源文件,他先包含了这个声明文件,等价于

但是这个声明文件只包含声明,所以必须要通过命令行告诉计算机在哪里去寻找这个实体

注意,如果不包含这个include,直接通过命令行告诉计算机去哪里连接实体是要报错的

还有一个注意的点:如果只有链接没有声明,那么文件是不能使用另一个链接文件的变量的

当然也可以直接手写声明然后通过命令行连接

比如这张图,模块1和2是实体,模块三前面是手写的声明,后续是使用

然后我们包含直接包含实体(少打了一个#)

他等价于

所以此时不用再告诉计算机连接,直接点击运行即可

面向对象的链接的原理跟上面的是相同的,但是习惯写法不一样,见教材就可以了

用VS2022的就不用命令行链接了,直接写在左边的操作栏里面就可以了,比如

各个函数分别长成这个样子

然后直接点击运行就好了,不用命令行

注意哪些文件需要头文件,哪些不需要,以及包含的方式到底使用尖括号还是双引号,都要注意

最后还要提醒一个点,在Time.cpp这个文件里面写类的定义的时候将成员函数写在全局,此时如果有虚函数,是不会在Time.cpp里面写上virtual的,而是会在Time.h里面的声明那里写上virtual

然后还有一个东西,我们定义了多个文件,如果文件之间要传递信息(比如用MFC编程,子窗口的操作会影响父窗口的某一个变量的值从而在父窗口输出某个信息),就要在某一个文件定义全局变量,然后在另一个文件中声明这个全局变量,然后就可以直接在另一个文件中使用这个全局变量了

posted @ 2023-11-08 23:00  最爱丁珰  阅读(6)  评论(0编辑  收藏  举报