您的位置:首页 > 其它

关于const的使用

2011-09-18 22:51 344 查看
一 引入

说到const,是从c的预处理#define而来的,其最初动机为取代#define来进行值替代。从这以后在c++中它就可以用于修饰指针等。

二 值替代

在c/c++中#define一个数,编译器不为它分配内存,不进行类型检查,仅仅做了些文本替换。那么const呢?也是如此吗?(以下仅仅讨论在c++中)

默认的情况下,const 一个变量并定义它(如const int i=1;)编译器不为它分配内存,仅仅把值放在符号表中,而且此常量仅仅只能在定义它的文件中可见(也可以理解为在其它文件中不能使用它,即不能通过extern来使用它,因为它没分配到内存)。那么我要为它分配它内存呢?可以通过extern关键字,即可以extern const int i=1;这样在其他文件也来访问i了。

三 const数组

const数字仅仅意味着‘不能改变的一块存储空间’,而编译器不知道存储的内容是什么,所以下列代码不能通过。

const int a[]={1,2,3};

double d(a[1]);//非法的



const int i=2;

double d[2];是正确的;

四 const指针

这个不多说了。

五 const返回值

对于内置类型,const返回值没什么意义。

对于用户自定义的类型,const返回值才有意义。既可以说明它是否可以为左值。

六 类中的const

const数据成员。如

class x{const int i;public:x(int ii):i(ii){}};这个说明const的数据成员必须在构造函数的初始化表中初始化。

const 成员函数。

void f() const;说明这个成员函数不能修改内部数据成员。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: