关于c++:Effective-c条款2尽量以constenuminline替换define

35次阅读

共计 606 个字符,预计需要花费 2 分钟才能阅读完成。

条款 2(Clause 2)

:Prefer consts, enums, inlines to #defines

1 应用 const 替换 #define

比方:将上面的替换

#define ASPECT_R 1.00

const double AspectR=1.00;

起因:可能记号名称 ASPECT_R 未进入记号表内,当你使用这个常量的时候,显示的报错信息外面可能不会提到 ASPECT_R,只提到了 1.00,所以找不到谬误在哪里。而应用 const 就不会呈现这种状况。

两种非凡状况

1, 定义常量指针(constant pointer)
写两次 const

const char* const name="Yap Miracle";
// 上面这样更好
const std::string name("Yap Miracle");

2,class 专用常量

不必宏定义来实现函数

别用这种函数

#define CALL_WITH_MAX(a, b) F((a) > (b) ? (a): (b))

应用

template <typename T>
inline void callWithMax(const T& a,const T& b)
{f(a > b ? a : b); // f 为简略比拟函数
}

这种写法有很多益处,它恪守作用域和拜访规定。

最初请记住

1、对于单纯常量,最好以 const 对象替换 #define。
2、对于形似函数的宏,最好改用 inline 替换 #define。
3、#include 和 #ifdef,#ifndef 依然是必需品。

正文完
 0