C++ | const与#define的区别

在之前的博客里写到了C语言中的 const 关键字,而 const 在C++中也有广泛的使用。在C++中,可以用 const 定义常量,也可以用#define定义常量。但是这两者之间又存在区别。

先说一下#define常量的概念。

define:无参宏定义的一般形式为:#define 标识符 字符串

define 函数定义一个常量。常量类似变量,不同之处在于:在设定以后,常量的值无法更改。作用域不影响对常量的访问 。常量值只能是字符串或数字。

C++ 常量:

编译阶段,把用到常量的地方替换成常量初始化的值

1. 一定要初始化

2. 不能做左值

3. 不能间接修改,杜绝间接访问来修改常量内存的风险

问:const与#define相比有什么不同?

答: C++中可以用const定义常量,也可以用#define定义常量,但是前者比后者有更多的优点:

1. const常量有数据类型,而宏常量没有数据类型。编译器可以对const常量进行类型安全检查,而对#define只进行字符替换,没有类型安全检查,并且在字符替换中可能会产生意料不到的错误,例如边际效应。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值