C++ 中 const和define的区别

请区别用#define命令定义的符号常量和用const定义的常变量。符号常量只是用一个符号代替一个字符串,在预编译时把所有符号常量替换所指定的字符串,它没有类型,在内存中并不存在以符号常量命名的存储单元。而常变量具有变量的特征,它具有类型,在内存中存在着以它命名的存储单元,可以用sizeof运算符测出其长度。与一般变量惟一的不同是指定变量的值不能改变。用#define命令定义符号常量是C语言所采用的方法,C++把它保留下来是为了和C兼容。C++的程序员一般喜欢用const定义常变量。虽然二者实现的方法不同,但从使用的角度看,可以认为用了一个标识符代表了一个常量。有些书上把用const定义的常变量也称为定义常量,但应该了解它和符号常量的区别。

const的用法

 1、C程序中的作用

   定义常量、修饰函数参数、修饰函数返回值

 

  2、C++程序中特有的作用

       修饰函数的定义体;定义类中某个成员函数为恒态函数即不可改变类中的数据成员;

const和define的区别

 C++中const和define都可以定义常量,但是const有更多优点

  (1)const常量有数据类型,而宏常量没有,编译器可以对const常量进行类型安全检查,而后者只进行字符替换没有安全检查,可能生意料不到的错误(边际效应)

 (2)有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试,c++中使用const常量而不是宏常量,即const常量完全取代宏常量。

 (3)const与#define最大的差别在于:

          前者在堆栈分配了空间,而后者只是把具体数值直接传递到目标变量罢了。或者说,const的常量是一个Run-Time的概念,他在程序中确确实实的存在并可以被调用、传递。而#define常量则是一个Compile-Time概念,它的生命周期止于编译期:在实际程序中他只是一个常数、一个命令中的参数,没有实际的存在。

const常量存在于程序的数据段,#define常量存在于程序的代码段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值