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...








posted on 2012-02-24 10:46  月神夜  阅读(195)  评论(0)    收藏  举报