- 尽量使用const,enum,inline,减少define的使用
- define是预编译指令,预编译时直接替换为对应的值,不做合法性检查。其他都是编译环境做处理,会对合法性进行检查
- define不能引用,和enum一样,但是const可以用于地址或者引用
- 声明一个const指针常量方式
const char* const p = "hello"
,包含指针常量和data常量 - 声明类const成员常量
这两种方法等效的,声明的时候定义,以及声明 定义分开,如果想直接使用,则需要使用enumclass Gamer { private: static const int numbers = 10; ... } class Gamer { private: static const int number; } const int Gamer::number = 10;
Class Gamer { private: enum { number = 10}; int score[number]; .. } ··· 第三种方法不可以取地址和引用,而且声明的时候可以直接使用
- 宏定义类似方法
#define MAX(a,b) f((a) > (b) ? (a) : (b)) MAX(++a, b) 如果a>b, 则a会自加两次,如果b>a,则会加1 换成inline之后,就可以解决这个问题 template<typename& T> inline void max(T a, T b) { f(a > b? a:b); }
- 尽可能使用const
- const和指针组合的规则:const出现在号左侧,是data常量,如果在右侧,则指针是常量,如果在两侧,则指针和data都是常量
C++改善程序设计的55个做法笔记
最新推荐文章于 2023-01-05 21:17:45 发布