关于const的使用

一 引入

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

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值