c++ 关键字const

   学习C++的过程中,发现const出现的地方实在是太多了,让我一时感觉:”怎么哪都有你啊!“呵呵,const对于程序员而言就像一个定身符,用来约束那些常量,函数,文件,以及类中的成员。下面对const出现的不同位置做个总结。

 1.const 定义变量常量

   const int bufsize = 512;   

   const 变量必须在定义的时候就初始化,如果

   const int bufsize;  bufsize = 512;

   这是不允许的。

2.const 引用

   大家有理解两个概念:引用其实就对象的另一个名字,const 引用其实就是指向const对象的引用(这不是废话.....)

  如const double dval = 3.1415;  

   const double &temp =  dval;   //ok

   int &temp1 = dval;                  //error

   当dval为non-const类项的时候 ,既double dval = 3.1415;对它的const 引用其实没什么意义,因为尽管temp不能更改,但dval还      是可    以更改,如果dval = 5;那么temp 也会变成5.

    但这种情景会有个例外,如:

     double  dval = 3.1415;

     const   int  &temp = dval;

      dval = 4;

     大家猜一下现在temp变成几了,是3还是4呢?

     这里面涉及到类项的转化,过程是这样的:

      当执行到const int &temp = dval时,会先有个中间变量   int t = dval ; 然后const int &temp = t; 这个dval没有想到中间居然插    出个小三....于是乎temp和它再无任何瓜葛,最后temp的值是3

3.const 指针

     相信大家对这个都非常的熟悉,简而言之:谁离const 近,它就绑谁。

     const double *ptr = &dval;     //double 离它比较近,所以ptr可以去指向别的变量,而dval则不能变

     double* const ptr = &dval;     //与上整好相反

4.const 成员函数

   class TextBlock {

     public:         

             const char& operator[](size_t position)  const

     private:

              mutable int length;

    };

    const成员函数就是为了确认该成员函数可作用与const对象上面,同时它也反映了class的接口,既哪些会改变对象内容,哪些不会。在const 成员函数中并非说里面的对象肯定就不会修改,一个可以从外部定义一个指针指向它的内容,然后通过指针更改它,另一个就是显示的通过关键字mutable(可变的)来释放掉对变量的约束,如length,如果一个成员函数中使用了length,这个变量在函数中是可更改的。


const 的使用还有很多细节,在此就不一一罗列了,C++Primer里面讲的很详细,由于笔者能力有限,不足之处还请指出来,以后我会陆续的将C++的总结写出来,大家一起学习。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值