C++ 声明、定义、初始化、赋值

声明:只是规定了变量的类型和名字,而没有进行内存分配
定义:不仅规定了变量的类型和名字,而且进行了内存分配,也可能会对量进行初始化。
初始化:当对象在创建时获得了一个特定值
赋值:擦除原有的值,并赋予新值

int a;                      //声明并定义a
extern int a;               //extern表示声明但不定义a。
extern int a = 2;           //任何包含了显示初始化的声明就成了定义
int a = 2;                  //初始化
a = 3;                      //赋值

一个小细节

对于int a = 2;我们可以很明显地分析这句话是声明并定义了变量a,并将a初始化为2。
但是对于int a;这句代码,我们该怎么分析呢?
首先这句代码声明并定义了a,但是它到底有没有进行初始化呢?
还记得我之前说定义有可能初始化么,其实这个初始化不仅包括显式初始化,而且包括默认初始化
但是默认初始化又与变量的类型和变量所在的位置有关:

当变量为自定义类类型:

调用自身的默认构造函数进行初始化。

当变量为内置类型时:

该变量定义在函数体外时,将被初始化为0。
该变量定义在函数体内时,将不会进行初始化。

所以对于int a;这行代码是否进行初始化,还跟其所在的位置有关。

posted @ 2021-12-06 13:05  Smah  阅读(759)  评论(0编辑  收藏  举报