条款1---C++尽量用const,inline,enum等代替#define

对于宏定义是发生在预处理的阶段,会出现许多预想不到的失误。所以:

1、对于单纯的常量最好采用const对象或enums替换

2、对于行似函数的宏定义采用inline替换

通常我们需要声明一个类的成员数组,然而并不能直接的在类里面声明:

class test
{
    int scores[100];
}
以上是错误的写法。

1、可以:

class test
{
    static const int num = 100; //这是声明
    int scores[num];
}
2、或者:

class test
{
    enum {num = 100};
    int scores[num];
}
对于方法1,通常C++需要对使用的任何东西都提供一个定义,但是一个类的专属static常量除外,只要不取地址,就可以直接声明使用,若是要取地址,需要在实现文件里面提供一个定义,然而这个定义不需要再设初值,声明的时候已经设置了。如:

const int test::num;

有的编译器不支持在声明的时候直接赋值。所以需要在类之外赋值。

对于方法2,某些时候比较像define,因为取一个const的地址合法,取enum的地址就不合法。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值