C++ 使用const而不是#define

本文讨论了在C++中使用const关键字代替#define的原因,包括const在作用域、指针操作方面的优势,并指出#define的缺陷,如不考虑作用域、无法用于指针操作以及可能导致的错误替换问题。建议开发者尽量使用const进行常量定义以提高代码质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入

在《Effective C++》一书中的第二个条款,作者让我们尽量以const,enum,inline替换#define,换种说法就是“宁可以编译器替换预处理器”比较好。在一些基础性的文章内,我也是看到了将#define声明的宏视作为常量的作者,这里并不止针对一位作者,而是许多。或许,宏未被编译器所看见,在编译之前就可能编译器已经将所有宏替换了。

为什么使用const代替#define

1.作用域

#define并不注重作用域,封装作为面向对象的一部分,这样的操作为使得我们设计的类暴露出来,为了提供封装性,我们可以使用const成员变量代替#define
使用#define写的一段代码

#include <iostream>

#define MAX_SIZE 20
class BankQueue {
   
public:
	BankQueue() = default;
	BankQueue(BankQueue&) = delete;
	BankQueue(BankQueue&&) = delete;
	int max_size() {
   
		return MAX_SIZE;
	}
};

int main() {
   
	BankQueue bq;
	std::cout << bq.max_size() 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值