头文件与类的声明
1、C与C++的数据和函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bWn7Y6fD-1620554012233)(关于数据和函数.png)]
我们先来看一下在数据和函数的组织上,C和C++有什么异同。
如上图所示,在C语言中,我们首先拥有一个数据Data,然后会有处理数据的函数Function。这里会产生一个问题:理论上来讲,只要你的函数规定的功能足够多,对于任何数据都可以使用我们这里所规定的函数Function来处理。毫无疑问,这是会对数据的安全性,以及我们所希望的函数“专门专用”的性质所相违背的。因此,我们在C++中就会引入这样的方法:我们规定一个类(class),在这个类中,我们有数据成员和函数成员。函数成员专门处理这个类中的数据成员,这样就可以对我们上述所提到的C语言的弊端有着很好的改进。
在这篇之后的笔记中,我们会尝试着实现两个类:一个类是包含指针的,就是string字符串类;一个类是不包含指针的,就是complex复数类。这两个类有着比较大的区别,例如在string类中,我们会需要一个析构函数;而在complex类中,大多数情况下我们不需要析构函数。
2、C++代码基本格式,以及C++中头文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5jljQWIR-1620554012234)(C++代码基本格式.png)]
如上图所示,在C++中,代码通常由两部分组成:.cpp文件,以及.h文件。这其中,.h文件通常包含着C++类的声明(Classes Declaration),.cpp文件可以包含类的实现,也可以包含主函数等。
而对于.h文件,我们也要分为两类:第一类,是我们自己定义的头文件;第二类,是标准库提供给我们使用的头文件。
在使用中,自己定义的头文件通常使用双引号""
包含起来,而引用标准库头文件时,需要使用尖括号<>
包含起来。
那么,在具体使用头文件的时候,也有一个要点要注意,即所谓的“防卫式声明”(guard)。这是为了避免多重包含。
什么是多重包含呢?譬如说,我们在文件中需要引用a.h和b.h,a.h也引用了b.h。这样一来,我们在引用b.h和a.h的时候,就会重复地引用b.h两次,从而造成了多重定义的错误。因此,我们需要在代码里这样写:
//A.h头文件
#ifndef __A__
#define __A__
...//代码段
#