关键词不能为空

当前您在: 主页 > 英语 >

常量定义语句const范文

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-14 04:14
tags:

-

2021年2月14日发(作者:厄尔尼诺英文)









篇一< /p>


:



const


常量与


define


宏定义的区别》






(1)


编译器处理方式不同






define


宏是在预处理阶段展开。






const


常量是编译运行阶段使用。






(2)


类型和安全检查不同






define

宏没有类型,不做任何类型检查,仅仅是展开。






const


常量有具体的类型,在编译阶段会执行类型检查。






(3)


存储方式不同






define

宏仅仅是展开,


有多少地方使用,


就展开多少次,


不会分配内存。


const


常量


会在内存中分配


(


可以是堆中也可以是栈中


)







(4)const


可以节省空间,避免不必要的内存分配。



例如






#define PI 14159 //


常量宏






const doulbe Pi=14159; //


此时并未将


Pi

放入


ROM



......





double i=Pi; //


此时为


Pi


分配内存,以后不再分配!






double I=PI; //


编译期间进行宏替换,分配内存






double j=Pi; //


没有内存分配






double J=PI; //


再进行宏替换,又一次分配内存!






con st


定义常量从汇编的角度来看,


只是给出了对应的内存地址,


而不是象


#define


一样


给出的是立即数,所以,


const


定义的常量 在程序运行过程中只有一份拷贝,而


#define



义的常量在内存中有若干个拷贝。






(5)


提高了效率。



编译器通常不为普通< /p>


const


常量分配存储空间,


而是将它 们保存在符


号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使 得它的效率也


很高。






const



#define


的比较








C++


语言可以用


const


来定义常量,


也可以用


#define


来定义常量。


但是前者比后者有


更多的优点







1



co nst


常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安


全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不


到的错误(边际效应)








2




有些集成化的调试工具可以对


const


常 量进行调试,


但是不能对宏常量进行调试。






l < /p>


【规则


5-2-1


】在

< br>C++


程序中只使用


const


常量而不使用宏常量,即


const


常量完全


取代宏常量。






3


常量定义规则






l


【规 则


5-3-1


】需要对外公开的常量放在头文件中,不需要对外 公开的常量放在定义


文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公 共的头文件中。






l


【规则


5-3-2


】如果某一常量与其它常量密切相关,应在定义中包含这种关系,而不


应给出一些孤立的值。






例如






const float RADIUS=100;





const float DIAMETER=RADIUS * 2;





4


类中的常量






有时我们希望某些常量只在类中有 效。由于


#define


定义的宏常量是全局的,不能达到


目的,


于是想当然地觉得应该用


const


修饰数据成员来实现。


const


数据 成员的确是存在的,


但其含义却不是我们所期望的。


const


数据成员只在某个对象生存期内是常量,而对于整个


类而言却是 可变的,


因为类可以创建多个对象,


不同的对象其


const


数据成员的值可以不同。






不能在 类声明中初始化


const


数据成员。


以下用法是错误的,


因为类的对象未被创建时,


编译器不知道< /p>


SIZE


的值是什么。






class A





{







const


int


SIZE=100;


//


错误,< /p>


企图在类声明中初始化


const


数据成 员


int


array[SIZE];


//


错误,未知的


SIZE







};





const


数据成员的初始化只能在 类构造函数的初始化表中进行,例如






class A





{







A(int size); //


构造函数






const int SIZE





};





A::A(int size) : SIZE(size) //


构造函数的初始化表






{










}





A a(100); //


对象


a



SIZE


值为


100





A b(200); //


对象


b



SIZE


值为


200





怎样才 能建立在整个类中都恒定的常量呢?别指望


const


数据成员 了,应该用类中的枚


举常量来实现。例如






class A





{







enum { SIZE1=100, SIZE2=200}; //


枚举常量






int array1[SIZE1];





int array2[SIZE2];





};





枚举常量不会占用对象的存储空间,它们在编译时被全部求值。枚举常量的缺点是它的< /p>


隐含数据类型是整数,其最大值有限,且不能表示浮点数(如


PI =14159




sizeof(A) =1200;


其中枚举部长空间。








enum EM { SIZE1=100, SIZE2=200}; //


枚举常量


sizeof


< p>
EM



=4


< p>





篇二


:



C++


语言中


const


关键字用法总结》





C++


语言中


const


关键字用 法总结






一、


const


是什么







C/C++


语言中,

< p>
const


关键字是一种修饰符。所谓“修饰符”


,就是在编译器进行编


译的过程中,给编译器一些“要求”或“提示”

< br>,但修饰符本身,并不产生任何实



际代码。



const

< p>
修饰符而言,它用来告诉编译器,被修饰的这些东西,具有“只读”的特点。在编

< br>译的过程中,一旦我们的代码试图去改变这些东西,编译器就应该给出错误提示。






所以,


const


修饰符的作用主要是利用编译器帮助我们检查自己代 码的正确性。我们使



const


在源 码中标示出


“不应该改变”


的地



方,


然后利用编译器,


帮助我们检查这些地 方


是否真的没有被改变过。如果我们不小心去修改了这些地方,编译器就会报错,从而帮 助我


们纠正错误。使用


const


和 不使用


const


,对于最终编译产生的代码并没有影响。






虽然


const


对于最终代码没有影响,


但是尽可能使用


const



将帮助我们避免很多错误,


提高程序正确率。






二、< /p>


const


可以修饰哪些对象






在上面 已经提到过了,


const


是一种修饰符,那它可以作为哪些对 象的修饰符呢?下面


列举了一些


C/C++

中用到


const


的地方。






1



const


变量






2



const


指针






3



const


引用






4



const







5


,类的


const


成员变量





6


,类的


const


成员函数






7



const


修饰函 数的形参与返回值






下面我们分别讨论上面几种情况下,


const


的用法。






三、


co nst


与变量








当一个变量被


const


修饰后,具有以下 几个特点






1


)该变量只能读取不能修改。


(编译器进行检查)






2


)定义时必须初始化。






3



C++


中喜欢用


const


来定义常量,


取代原来


C< /p>


风格的预编译指令


define



1


const


int


var; // Error:


常量



变量



需要初始化设定项






2 const int var1=42;





3 var1=43; // Error


表达式必须是可以修改的左值






上面代 码中第一行和第三行都有错误,注释便是编译器给出的错误提示。






另外注 意,


在使用


const


变量作为数组的 下标时,


变量的值一定要是一个常量表达式


(

< br>在


编译阶段就能计算得到结果


)







1 const int sz=42;





2 int iAr[sz];





3 const int sz1=size(); // size()


必须是一个返回常量的函数






4 int iAr1[sz1];





5





6 int var=42;





7 const int sz2=var;





8 int iAr2[sz2]; // errorsz2


只有运行时才知道值






四、< /p>


const


与引用






我们知 道,引用必须在定义的时候赋值,这样就会所引用的变量绑定在一起并作为它的


一个别名 ,在程序中的其他地方,是不能让引用再与其他对象绑定。这个特性,让引用看起


来就像 是


const


对象一样,一旦定义后将不能更改。所以并不存在


const


的引用。






但是我 们却可以引用一个


const


的对象


(


变量


)


,我们称之为对常量的引用,与 普通的引


用不同的时,对常量的引用不能被用作修改它所绑定的对象。

< br>



-


-


-


-


-


-


-


-



本文更新与2021-02-14 04:14,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/654660.html

常量定义语句const范文的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文