当前位置:首页 > TAG信息列表 > const声明的变量能修改吗const和define的区别?介绍

const声明的变量能修改吗const和define的区别?介绍

const声明的变量能修改吗 const和define的区别?

const和define的区别?

define宏定义和const常变量区别:

是宏定义,程序在预处理阶段将用define定义的内容并且了替换。

所以程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。const定义的常量,在程序正常运行时在常量表中,系统为它分配内存。

const声明的变量能修改吗 const和define的区别?

定义的常量,预处理时只是因为就通过了替换。所以才编译程序时肯定不能参与数据类型检验。const定义的常量,在编译时进行不是很严的类型检验,也可以以免出错。

定义方法表达式时要再注意“边缘效应”,例如如下定义:#definen23//我们想像的n值是5,我们这样使用nintan/2//我们想象之外的a的值是2.5,可实际上a的值是3.5

cconst定义的变量可以改变吗?

不是的,在对象生存期内是不可以哦决定的,过了生存期那是大多数变量了。

在c中,const成员变量也没法在类定义处重新初始化,不能是从构造函数重新初始化列表参与,因此要有构造函数。

const数据成员只在某个对象生存期内是常量,而这对整个类而言却是几何涡轮的。毕竟类可以创建多个对象,相同的对象其const数据成员的值是可以不同。因此不能在类的声明中系统初始化const数据成员,毕竟类的对象没被创建战队时,编译器到底const数据成员的值是什么。

const数据成员的初始化只能在类的构造函数的初始化列表中进行。要想建立起在整个类中都恒定的常量,肯定用类中的枚举常量来实现,的或staticcosnt。

classtest

{

welfare:

test():a(0){}

enum{size1100,size2200}private:

constinta//只能在构造函数初始化设置列表中初始化

staticintb//在类的利用文件中定义方法并初始化操作

conststaticintc//与staticconstintc同一。

}

inttest::b0//static成员变量不能在构造函数重新初始化列表中初始化操作,因为它属于什么某个对象。

cosntinttest::c0//注意一点:给动态和静态成员变量变量时,不是需要加static修饰符。但要加cosnt

const成员常量变量


嘉丽号 蓝奏号

  • 关注微信关注微信

猜你喜欢

微信公众号