源码文件结构
要使用一种编程语言其实并不复杂,语言的基本语法都是固定格式的,难点在于将它们组合在一起来完成完整功能。本指南中的语言要点将只陈列各项语法结构,以及基本使用方法和常见技巧,对于其中原理将不再叙述,有需要的读者可以选择向更加详细的 C++教程求索。
C++语言是面向对象与面向过程的集合体,其书写自由程度较大,可以根据需要选择不同的实现方式。但 C++源码中的整体代码结构是有一定规律的。
首先,C++的源码是分为两部分的,第一部分为声明部分,第二部分为定义部分。
声明部分主要用于将变量、命名空间、函数、类等名称引入到程序中,并且制定了类型信息以及正在声明的对象的其他特征。C++中的元素(包括变量、命名空间、函数、类等)都必须先完成声明后才可以使用。一般情况下,声明都放置在.h
或者.hpp
头文件中,但变量不可在头文件中声明。
对于一些特殊的情况,例如两个类的声明中产生了交叉使用,即类A使用了类B,但类B是在类A之后定义的,这在C++中是不允许的,因为类A在使用类B的内容时,类B还未声明,此时可以将类B的声明进包含类B名称的部分放置在类A的声明前面,来使类A可以使用类B的内容,并在类A之后再定义类B的详细内容,这种声明方式称为前向声明。具体可见以下示例。
// 前向声明类B
class B;
// 声明类A,其中返回了类B的一个实例作为返回值
class A {
public:
B calculate();
}
// 这里才是类B的完整声明
class B {
public:
int numbers();
}
定义部分主要用于将声明部分所声明的内容具现化。每一个给定的元素在程序中只能包含唯一的定义,但声明与定义间可以是多对一的关系。定义一般放置在.c
或者.cpp
文件中。
其次,不管在放置声明的头文件中,还是在放置定义的源码文件中,所有内容的排布均是有规律的。一般会按照以下顺序依次书写。
#include
引用。- 预处理指令。
- 命名空间定义或引用。
- 自定义类型声明。
- 声明,包括类声明、函数声明等。
- 声明内容的定义,包括类成员、函数等。
main()
主函数。
书写时需要注意,在每一部分的内容中都不要违反先声明后使用的原则。