1.让自己习惯C++
2016-03-06 22:39
295 查看
Item01:
View C++ as a federation of language.c语言(无异常,无重载…)
object-oriented C++
Template C++
STL
Item02:
Prefer consts,enums,and inlines to #defineconst有类型检测,而#define不会进入符号表,出错不容易调试
enums可以作为类中开辟数组大小的专属常量
inline函数可以解决形似函数的宏的不确定行为
#define MAX(a,b) (a)>(b)?(a):(b) Max(a++,b) //此时a可能会自增两次
Item03:
Use const whenever possible函数返回一个常量
const T operator*(const T&lhs,const T&rhs); if(a*b=c) //if(a*b==c)的误写,此时返回为常量就可以避免错误
mutable可以释放non-static成员变量的bitwise constness约束,即可以在const成员函数中改变。
const成员函数调用non-static成员函数是一种错误的行为。
Item04:
Make sure that object are initialized before they are used.对象成员变量(非内置类型)的初始化动作发生在进入构造函数本体之前。
内置类型在本体前不保证获得初值,所以对于内置类型而言用成员初始化列表在性能上没有提升,但为了保持一致性也以该形式初始化。
static对象包括global对象、在namespace中、classes内、file作用域内(non-local static),以及函数内(local static)声明为static的对象。
问:
定义于不同编译单元内的non-local static对象的初始化次序无法确定,所以当一个编译单元中使用另一编译单元中未构造完成的一个non-local static对象(全域仅需一份)时,就会出现问题。
解:
用单例模式解决,以local staic替换non-local static(函数内的local static对象会在该函数被调用期间首次遇上该对象定义式时被初始化)。
class A{...}; A& getAInstance() //用该函数来访问A类对象 { static A a; return a; }
4000
相关文章推荐
- C语言实现使用静态数组实现循环队列
- C语言申请内存
- C/C++中const关键字详解
- 如何用C++读取文本文件中的数据存入到一个数组,并且对该数组任意长度求和
- 1105. Spiral Matrix (25)
- C语言字节对齐
- C语言全局变量和静态变量
- C语言有哪些鲜为人知的特性?及C语言未定义行为一览
- c++工程师笔试常见题目总结
- [土狗之路]coursera C语言进阶 习题 寻找平面上的极大点
- [土狗之路]coursera C语言进阶 习题 运算符判定
- C语言内存地址基础
- c语言之指针
- 12个有趣的C语言问答
- [土狗之路]coursera C语言进阶 习题 字符串中次数第2多的字母
- [土狗之路]coursera C语言进阶 习题 含k个3的数
- 1104. Sum of Number Segments (20)
- c++编程思想-第2章 对象的创建与使用-2
- C++学习 之const
- C++ mutable