const的读书笔记
初看C++ primer,const关键字的内容林林总总,记录一下。
1. 定义const对象:把一个对象定义为常量
const int bufSize=512;
bufSize=0;//错误
2. 被const修饰的对象默认为文件的局部变量:只能在定义该对象的文件中使用,其他文件不可访问。除非显示的指定此const对象为extern。
//file_1.cc
extern const int bufSize=fcn();
//file_2.cc
extern const int bufSize;//使用file_1里的bufSize
3. const引用:指向const对象的引用,即对于const对象,其引用也是const修饰的
const int ival=1024;
const int &refval=ival;
因为任何对ival的赋值都是不合法的,所以只读的refval是合理的。
另,用const引用可以灵活的初始化。
int i=42;
const int &r1=42;
const int &r2=r+i;
//以上对于非const引用都是不合法的
4. const与指针
4.1 指向const对象的指针
const int ival=10;
int *p=&ival;//×
const int *p=&ival;//√
const void *p=&ival;//√
4.2 const指针
int ival=0;
int *const p=&ival;
p是指向int型变量的const指针,p不能指向其他对象。
4.3 指向const对象的const指针
const int *const p=&ival;
5. const形参
bool isShorter(const string &s1, const string &s2);
我的理解是,利用const形参来避免复制形参。在结果上与复制形参一样(不改变实参的值)但可以避免复制对象的是时空消耗。
另外,可以使函数调用更灵活:把不修改相应实参的形参都改为const形参,可以灵活的用常量、字面值来调用函数。
6. const数组形参:不需要修改数组形参元素
void f(const int*);
To be continue...