1) 声明
告诉编译器这个名字的存在:变量名和函数名。
2) 定义
分配存储空间。对于变量是分配变量所表示数据的大小,对于函数会分配生成函 数代码所占的空间。
3) 声明和定义可以是一起的
如int a;当编译器没有在前面发现a时,就声明和定义了a。
4) 声明可以有多处,而定义只能有一个,否则链接时会出现重复定义的错误。
5) 声明函数时,函数名不能和数据成员名同名
6) 所有的声明都可以有多个,除了以下:
l 静态变量 (其实这是定义)
l 类成员函数
以下声明可重复,举例如下:
l 类声明 class Person;
l 结构声明 struct Persion
l 函数声明 void PrintName();
l 类型 typedef int* IntPointer
l 外部声明 extern int value;
l 友员声明 friend class Person;
l 命名空间 using std::cout;
7) extern
extern变量用于声明变量, 表示变量在别的文件定义或者本文件后面定义。对于函数来说,没必要用extern,一个函数只要不带{}就是声明。
8) extern “C” int Func(int a, int b);
它告诉编译器,按照C的标准定函数名,因为C++默认是按照一定标准命名函数的,比如_Func_int_int。这是为了C++写出来的程序可以兼容C编译器。
可以同时指定一堆函数:
extern “C”
{
void Func(int,int)
int Func2(float, int);
#include A.h //函数声明
}
9) 指针的声明/定义
int* pA, pB, pC; 只有pA是指针,其他两个是int。
如果想这样写,可以用typedef int* IntPointer。
IntPoint pA, pB, pC;
10) 解决include 同一头文件引起的外部链接错误
l 如果在头文件定义数据结构,而这个头文件被多个CPP文件引用,那么就会出现重复定义的错误
l 解决
#ifndef Header_FileName
#define Header_FileName
//头文件内容
#endif