effective c++的第02个条款

本文介绍了在C++编程中使用const、enum和inline替代#define的方法,包括如何定义常量、指针常量及类中常量的最佳实践。

1.尽可能的用const、enum、inline替代#define 或者说“宁可用编译器处理也不会让预处理器处理好”。

const double AspectRatio = 1.653 替代 #define ASPECT_RATIO 1.653

理由:AspectRatio是编译器实实在在看到的变量,编译时如果有误操作能够通过编译提示快速定位。
2.定义指针常量时应该

const char* const name = “cxue”

3.在类中定义常量时

class A
{
    private:
        static const int Number = 100;
       .....

}

理由:首先我们使用const声明来确定它是一个不可以改变的常量,其次我们用static来确定这个变量只实例化一次。值得注意的是#define不能创建一个class专属常量。
但是旧的编译器一般不支持上述语法,我们可以这样写

在头文件内
class A
{
    privatestatic const int Number;
    ....

}

在实现文件内
const  int A::Number = 5;

4.the enum hack法则
一般常量可以这样写

class A
{
    privateenum{ number = 5};
    ...
}

理由:1)enum hack更像#define 我们容易理解,2)取一个const的地址是合法的,而取一个enum的地址是不合法的。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值