关键词不能为空

当前您在: 主页 > 英语 >

常量定义语句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范文的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文