1 让自己习惯C++
~~~~~~~~~~~~~~~~ 1.1 尽量以const,enum,inline替换#define ========================================= 1. 用宏写出的函数,最好用template inline函数代替 1.2 尽可能用const ================== 1. 如果关键字const出现在*左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量 2. const iterator就像声明指针为const一样(T* const),表示这个迭代器不得指向不同的东西,但它所指的东西的值可以改变. 如果希望迭代器所指的东西不可变动(模拟const T*),需要从const_iterator 3. 令函数返回一个const值,可以防止对返回值进行赋值 4. 两个成员函数如果只是常量性不同,可以被重载- class A
- {
- public:
- char str[100];
- char& tb(int i){ return str[i];}
- const char& tb(int i) const { return str[i];}
- }
- class A
- {
- public:
- char str[100];
- const char& tb(int i) const { return str[i];}
- char& tb(int i)
- {
- return const_cast<char&>( //将const函数的返回值const移除
- static_cast<const TextBlock&>(*this) //为*this加上const,强迫调用的是const版本的函数
- .tb(i); //调用tb方法
- }
- }