《gcc五分钟系列》第七节:声明与定义的区别

    解释了好多遍,还是有同学不了解在C/C++中声明和定义的区别。这里简单介绍一下。
    1、变量
        声明:
            extern int a;
        定义:
            int a;
    2、函数
        声明:
            void fun();
        定义:
            void fun(){}
    3、结构体/类
        声明:
            class Bar;
        定义:
            class Bar{};
   
    那么,声明和定义的本质区别是什么?
    答:声明没有为符号分配存储空间、定义会为符号分配存储空间。
    1、变量
        extern int a;
        这句话是告诉编译器,变量a在别的地方有了,所以不需要在这为它分配存储空间了。
        int a;
        这句话是告诉编译器,我需要创建一个变量,请为它分配存储空间。
    2、函数
        void fun();
        函数体包含若干语句,编译后会产生若干指令。声明是告诉编译器,这个函数的指令保存在别的地方了。
        void fun(){}
        这里会为这个函数分配存储空间、保存函数的指令。
    3、结构体/类
        class Bar;
        同样不分配存储空间。
        class Bar{};
        一个结构体/类在定义的时候会产生它的各种指针,以及内存分配方式的代码。
       
    感觉解释的不是很清楚,不过我能力也就如此了。建议大家多实践,多看看书。
    本节完。