声明和定义

C++语言可以将声明和定义分开。

初始化

当一个对象被创建的同时获得了特定的值成为对象的初始化。

默认初始化:定义变量时没有指定初值,则变量会被默认初始化,编译器会给一个默认值,该默认值由数据类型和定义的位置决定。

如内置类型变量在定义时没有显式初始化,变量在函数体外会被默认初始化为0;在函数体内部不会被初始化,也即未进行定义,该对象的创建是失败的,如果引用该对象或指针指向该对象会引发错误。

显式初始化:定义变量时给定初值。

声明

声明规定了变量的名字和类型;

变量和函数都有声明和定义,在使用前必须进行声明。声明告诉编译器类型和名字,不负责开辟存储空间,存储地址需要编译器去找。

变量或函数可以被声明多次,但通常只能进行一次定义。

extern关键字标识的才是声明,其余都是定义。

内置类型的声明将自动成为定义,因为编译器知道为其分配多少空间。枚举和类的声明也会自动成为定义。

定义

定义除了规定变量的名字和类型,还申请了空间,也可以为变量赋初值。

定义的同时也进行了声明,并开辟了存储空间。

任何加上显式初始化式子的声明都是变量的定义,包括extern关键字,extern int a = 1;这时extern的作用就消失了,变量a被定义。且extern声明位于函数外部时,才可以含有初始化式,在函数内部初始化会报错。

一个变量没有被初始化是未进行定义的。

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top