Effectivec++读书笔记1

第一章 自己习惯C++

  尽量要用 const  enum inline 去替换 #define ,也可以定义为 “宁可以编译器替换预处理器”比较好, 因为 #define 不是属于语言的一部分。

  对于这个问题 该书 提及到 #define ASPECT_RATIO 1.653 这个 宏定义 当出现问题时 只是会出现1.653 这个错误 而不是ASPECT_RATIO  因为编译预处理将宏替换为它所定义的东西

  const char *str="Scott Meyers";

  const std::string str("Scott Meyers");

class 专属常量 为了将常量的作用域限制在class 内你必须让它成为class的一个成员 而为了确保此常量只有一份实体应该把这个常量声明为 static 成员

class GamePlayer

{

private:

   static const int NUMTURNS;

    int scores[NUMTURNS];

     ....

}

在 CPP文件当中写上

const int GamePlayer::NUMTURNS=5;

如果不想让任何人获取一个指针 或引用e 指向你的某个整数常量 enum可以做到 Enums 和#define相同 不会导致过度的内存分配

对于宏的替换 最好使用模板函数进行替换 比如CALL_WITH_MAX(a,b)  ((a)>(b)?(a):(b) 


替换为template<typename T> inline void callWithMax(const T &a,const T &b){ f(a>b ? a:b)}






    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值