C++声明和定义

1、对于函数

编译器只需要声明【函数名、参数、返回信息等】,而链接器则需要函数的具体定义【具体实现,即body】!

Log.cpp

void Log(const char *message)	//告诉编译器Log函数存在,到时候自己去找
    
void InitLog(){
    Log("Init log");
}

Main.cpp

void Log(const char* message){
	std::cout<<message<<std::endl;
}

int main(){
	Log("hello,world");
}

如果我想在另外的cpp文件中也使用Log,怎么办呢?答案是继续声明Log

B.cpp

void Log(const char* message);

void TestLog(){
	Log("hello");
}

​ 很显然,每次都这样对函数进行申明好麻烦的,所以就引出了头文件!我们结合#include命令可以知道,#include就是把.h文件的内容进行展开,恰好这就是我们需要的效果。我们在头文件里面进行函数或者类的申明,这样编译器就知道XXX函数或类存在并且在某个cpp里面实现了,去哪里找就是连接器的工作了。

2、对于变量

声明:

  1. 一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
  2. 另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。

定义:为了给变量分配内存,为变量赋初值