1. 对于常量,最好使用const对象或enums替代#defines
2. 对于类似宏的函数,最好使用Template inline替代#defines
3. 如果const出现在*左边,表示data是常量;如果const出现在*右边,表示pointer是常量
char greeting = "Hello"
const char* p = greeting; // const data
char* const p = greeting; // const pointer
4. 对于在const函数中需要改变某些变量的值:使用mutable关键字修饰变量
5. 当const和non-const函数中有重复代码:在non-const函数中调用const函数
const char& operator[](std::size_t position) const
{
return text[position];
}
char& operator[](std::size_t position)
{
return
const_cast<char&>( //去除op[]返回值的const
static_cast<const TextBlock*>(*this) //为*this加上const
[position];
);
}
6. class creates following specific member functions implicitly:
a. default constructor; b. copy constructor; c. copy assignment operator; d. destructor
7