变量修饰符的定义、声明和初始化

1、类对象(变量)的声明、定义与初始化

修饰符有以下几种,const, extern, (explicit),( mutable) , static, volatile,(virtual),(inline)其中带括号的为自定义类类型定义过程中特有的修饰符

主要将其分为多文件与单文件组织结构,类型种类(内置类型,标准类型,自定义类型)进行分别讨论,主要讨论修饰作用、标志问题(区分可以与不能)和建议。

下面分别说明不同修饰符的作用

修饰符

对变量的总体作用

const

更改变量默认的链接性,变量不可更改性(存储位置更改)

extern

声明变量的链接性,声明函数的链接性,语言的链接性

http://blog.csdn.net/cjf_wei/article/details/66500244

static

设置变量的链接性,变量存储位置更改

volatile

更改变量的机器关联性,编译器不做优化

 

1.1  类型对象实例/变量 声明和定义修饰符标识

类对象实例(或者称为变量)的声明,与自定义类类型中的数据成员的声明和定义不同

(有关自定义类数据成员的声明与定义的修饰符标志问题将单独进行讨论),其产生(声明与定义同时)或寻找(仅仅是声明)对应类型的变量,修饰符不区别对待变量的不同类型。程序中使用到的变量必须有且仅有一次定义,但可以进行多次声明,且当且仅当(非自定义类内部数据成员的conststatic成员可以例外)定义时能够初始化(定义时可采用括号初始化和赋值操作符进行初始化,但是采用赋值操作符初始化时其含义以及操作时间不同于赋值操作)。

在本小节中,主要描述不同修饰符的作用,以及默认标识,其中声明时修饰符必须显示标识,定义时如果有默认的修饰符可不显示标识,但是显示标识可提高程序可读性,如无默认修饰则必须通过修饰符获取相应的扩展。

 

修饰符

(前置修饰)

 

 

变量

 

const

extern

static

volatile

非自定义类类型中的变量声明和定义

不可修改变量的值;定义时默认为文件级变量,可通过显示extern扩展

指定为声明;扩展变量为多文件级变量;定义时非const变量默认带有该标识

静态存储变量;不可更改的文件级变量

机器因素可更改变量,编译器不作优化处理

 

1.2  自定义类数据成员定义和初始化

(自定义类声明、定义和实现所表达的含义不懂,定义体和声明体表示的含义也不清楚,变量的定义表示为其分配存储空间,声明表示为指定该变量的类型)

自定义类中,类声明(非前向声明)与类定义同变量的声明和定义含义有所不同,自

定义类声明表明该类的特性,而该类的类定义可以表述为定义了一种新的数据结构(http://www.weixueyuan.net/view/6333.html),类实现表诉为???

数据成员在类声明(非前向声明)中进行声明,一般在类构造函数中进行初始化,即定义,除static成员数据必须在类定义体的外部定义和初始化,但const static成员数据可在自定义类声明体内部进行初始化,虽然也必须在声明体外部进行不初始化的定义。修饰符采用前向标识,在构造函数中进行初始化完成数据的定义,但在static修饰符下,其需要在类定义体的构造函数外部单独进行初始化,其定义和初始化分开进行。

     修饰符

(前置

修饰)

声明

初始化

const

static

volatile

mutable

(可在const函数中更改该数据成员)

声明时标识

所有数据的特殊作用扩展都需要在声明时显示标识

初始化时标识

必须在构造函数初始化列表中完成初始化

需要在类定义体外进行初始化,但不可进行显示标识

可在构造函数初始化列表中初始化,或在构造函数体中进行非初始化赋值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值