1.
.h叫做头文件,它是不能被编译的。“#include”叫做编译预处理指令,可以简单理解成,在demo.cpp中的#include"demo.h"指令把demo.h中的代码在编译前添加到了demo.cpp的头部。每个.cpp文件会被编译,生成一个.obj文件,然后所有的.obj文件链接起来共同实现整个程序的完整运行。因此头文件中只进行常量(constant)、变量(variable)、函数(function)以及类(class)等的声明,而源文件则负责变量的定义(define)以及函数(function)的实现。
常见的编程风格是:一个类的名字作为其头文件和源文件的主文件名比如Class1.h和Class1.cpp,这个类的声明在Class1.h中,实现在Class1.cpp中,我们人类看起来比较整齐,读起来方便,也很有利于模块化和源代码的重用。
为什么这个风格会约定俗成?有一句著名的话,叫“程序是为程序员写的”。
2.
.h文件和。cpp文件也就是说,在h文件中声明Declare,而在cpp文件中定义Define。 “声明”向计算机介绍名字,它说,“这个名字是什么意思”。而“定义”为这个名字分配存储空间。无论涉及到变量时还是函数时含义都一样。无论在哪种情况下,编译器都在“定义”处分配存储空间。对于变量,编译器确定这个变量占多少存储单元,并在内存中产生存放它们的空间。对于函数,编译器产生代码,并为之分配存储空间。函数的存储空间中有一个由使用不带参数表或带地址操作符的函数名产生的指针。定义也可以是声明。如果该编译器还没有看到过名字A,程序员定义int A,则编译器马上为这个名字分配存储地址。