漫谈:C语言 C++ 声明和定义的区别是什么

        C语言麻拐得很。

        “声明”的意思是“有这个东西,但不一定在哪儿”。

        “定义”的意思是“创建这个东西”。“定义”当然同时也是“声明”。

       声明可以有多个,但不可以不一致。定义只能有一个。

        一个变量或一个函数,什么时候是定义、什么时候是声明,是很复杂的。

        原则上,头文件里面应该只有声明而没有定义

int a;

        这是一个定义(同时也是一个声明)。

        如果这是在头文件里,而这个头文件被包含了两次,那么就是定义了两次,编译无法通过。所以一般变量不建议在头文件里面定义。

extern int a;

        这是一个声明,变量在那哪里定义不知道。同样的声明可以有多个,所以头文件可以随意包含而不担心冲突。

int a();

        这是一个声明,因为没有函数体,不可能实际生成这个函数。任何函数被调用前编译器都要知道函数的声明,不然不知道怎么传参数。

int a()
{
    return 0;
}

        这是一个定义,会实际生成函数的代码供其它地方调用。因为定义只能出现一次,所以函数体一般也写在源文件里(而不是头文件里)。

        类和全局变量、全局函数不一样,类里面的所有成员变量都是声明,成员函数则是可以是定义也可以是声明,类的静态变量在类外面定义,成员函数也可以定义在外面。类的成员函数如果定义在里面,每个源文件都会包含一份实现代码(当然编译器可以优化掉重复的)。类的非静态变量是在定义类的实例的时候生成的。

(这里是结束)

你可能感兴趣的:(软件开发,设计,抱怨与漫谈,c语言,c++,开发语言)