C++进阶—>const、define和enum的区别和用途

1.区别

这三种都可以定义常量。

define是宏定义,编译器不对其进行错误检查,在预编译阶段处理,没有作用域限制属于全局常量,在程序中编译器会对定义的常量名以数值进行替换,且每次替换都分配内存,此方法对于大量常量的情况下会占用较多内存从而导致程序效率;

const是常量定义,在编译阶段处理,作用域限制,定义常量分配内存后后续再使用常量情况下不会再为其分配内存,只分配一份内存地址,故常用于此方法定义常量;

enum是枚举常量定义,在编译阶段处理,有作用域限制,枚举类型中可以定义多个常量(往往是同一归属的常量,比如定义星期可以有7种,enum weekday{one=1,two=2,three=3};(weekday是定义的枚举类型名)),需注意的是在C++中enum枚举类型中只能赋值int型值(即使可以赋值字符,但输出仍是整型)。

define、cosnt和enum的区别:

(1)define 宏定义常量,在开始预处理时就要被替换,所以定义的记号名不会进入记号表,当编译调试时,因为到时直接是一个数值,可能让人产生迷惑。 可以用const 和 enum 来代替宏。常量肯定会进入记号表,可以更容易跟踪,使用常量可能比使用#define导致较小量的码,因为编译器会盲目的将宏定义进行替换,而常量一般在内存中只有一份实体

(2)我们无法利用#define创建一个class专属常量,因为#define并不重视作用域。

(3)取一个const地址是合法的,但取一个enum的地址是不合法的,取一个#define的地址也不合法

2.用途

(1)define:一般用于全局型常量的定义,通常较少使用,在具有较少全局型常量(程序各处都可能用到该常量)时使用;

(2)const:一般用于类常量,常配合static来使用,定义类中静态常量,类的任何对象都能够共享此常量static const常量在定义时初始化。程序中往往多使用const来替代define。

(3)enum:一般用于某种类型具有多个常量的时候定义,比如某种功能实现有三种方法,可定义enum method{method0=0,method1=1,method2=2}来选择使用哪种方法实现其功能。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值