让自己习惯C++
2013-03-23 21:19
148 查看
尽可能使用const
Chargreeting[] = “Hello”;
Char*p = greeting; //non-constpointer, non-const data
Constchar* p = greeting; //non-constpointer, const data
Char*const p = greeting; //constpointer, non-const data
Constchar* const p = greeting //const pointer, const data
inta[5] = {1,2,3,4,5};
vector<int>vec;
vec.assign(a,a+sizeof(a)/sizeof(int));
constvector<int>::iterator iter = vec.begin(); //iter的作用像个T* const
*iter= 10; //没问题,改变iter所指物
// ++iter; //错误! iter是const
vector<int>::const_iteratorcIter = vec.begin(); //cIter的作用像个const T*
// *cIter= 10; //错误! *Iter是const
++cIter; //没问题,改变cIter
REMEMBER:
将某些东西声明为const可帮助编译器侦测出错误用法。Const可被施加于任何作用域内的对象、函数参数、函数返回类型、成员函数本体。
编译器强制实施bitwiseconstness,但你编写程序时应该使用“概念上的常量性”(conceptual constness)。
当const和non-const成员函数有着实质等价的实现时,令non-const版本调用const版本可避免代码重复。
构造函数最好使用成员初值列(memberinitialization list),而不要再构造函数本体内使用赋值操作(assignment)。初值列列出的成员变量,其排列次序应该和他们在class中的声明次序相同。
为免除“跨编译单元之初始化次序”问题,请以localstatic对象替换non-local static对象。
Chargreeting[] = “Hello”;
Char*p = greeting; //non-constpointer, non-const data
Constchar* p = greeting; //non-constpointer, const data
Char*const p = greeting; //constpointer, non-const data
Constchar* const p = greeting //const pointer, const data
inta[5] = {1,2,3,4,5};
vector<int>vec;
vec.assign(a,a+sizeof(a)/sizeof(int));
constvector<int>::iterator iter = vec.begin(); //iter的作用像个T* const
*iter= 10; //没问题,改变iter所指物
// ++iter; //错误! iter是const
vector<int>::const_iteratorcIter = vec.begin(); //cIter的作用像个const T*
// *cIter= 10; //错误! *Iter是const
++cIter; //没问题,改变cIter
REMEMBER:
将某些东西声明为const可帮助编译器侦测出错误用法。Const可被施加于任何作用域内的对象、函数参数、函数返回类型、成员函数本体。
编译器强制实施bitwiseconstness,但你编写程序时应该使用“概念上的常量性”(conceptual constness)。
当const和non-const成员函数有着实质等价的实现时,令non-const版本调用const版本可避免代码重复。
构造函数最好使用成员初值列(memberinitialization list),而不要再构造函数本体内使用赋值操作(assignment)。初值列列出的成员变量,其排列次序应该和他们在class中的声明次序相同。
为免除“跨编译单元之初始化次序”问题,请以localstatic对象替换non-local static对象。
相关文章推荐
- Effective C++读书笔记(二)让自己习惯C++部分
- Effective C++之让自己习惯C++
- Effective C++ 1.让自己习惯c++
- ec++的笔记(1) --- 让自己习惯C++
- 读书笔记之Effective C++ 1.让自己习惯C++
- Effective C++读书笔记 第一部分 让自己习惯C++
- Effective C++第一章:让自己习惯C++
- Effective C++ 读书笔记(一)让自己习惯C++
- 《Effective C++》让自己习惯C++:条款1-条款4
- 1 让自己习惯C++
- 《Effective C++ 3》01 让自己习惯C++ 条款:01-04
- 让自己习惯C++
- Effective C++笔记第一部分:让自己习惯C++
- Effective C++(一)让自己习惯C++
- 《Effective C++ 3/e》笔记(一):让自己习惯 C++
- Effective C++ 笔记一 让自己习惯C++
- 1、让自己习惯c++
- 【Effective C++笔记】让自己习惯C++
- Effective C++ 3nd 读书摘要(一、让自己习惯C++ ; 二、构造,析构,赋值运算)Item1 - 12
- 《Effective C++》第1章 让自己习惯C++-读书笔记