Effective C++初学习
item1:视C++为一个语言联邦
1.C,以C为基础。然而C没有模板(templates)、没有异常(exception)、没有重载(overloading)…
2.面向对象编程
3.Template C++泛型编程
4.STL.
C++高效编程守则视状况而变化,取决使用C++哪部分。
item2:const,enum,inline替换#define
1.宏定义追踪它浪费时间,
采用const double variable=1.63
会使用较小量的码。
2.常量char* -based字符串,采用const char * const variables=="Scott Meyers";
然而string对象更合适const std::string variables("Scott Meyers")
。
3.类的专属常量:
在类中private采用static const int NumTurns = 5;
常量声明式,注意并非定义式。
对于定义式则用:const int variables::NumTurns;
定义式,但是应该在实现文件而非头文件。
或者采用enum hack枚举类型充当private: enum {NumTurns = 5 }; int scores[NumsTurns];
4.对于形似函数的宏,最好采用inline替换#indefines
可以带来一般函数的所有可预料的行为和类型安全性.
如以a和b的较大值调用f函数
#define CALL_WITH_MAX(a,b) f((a)>(b)?(a):(b))
CALL_WITH_MAX(++a,b) a被调用2次
改为:
template<typename T>
inline void callWithMax(const T & a,const T & b)
{
f(a>b? a:b);
}
综上,单纯变量用const对象或者enums替换#define
对于形似函数的宏,改用inline函数替换#define。