关于const的使用

来源:互联网 发布:开票软件登录 编辑:程序博客网 时间:2024/04/30 16:46

一 引入

     说到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;说明这个成员函数不能修改内部数据成员。

   

原创粉丝点击