关于const

我们希望定义这样的一个变量,它的值不能被改变。

const int bufSize =512;


1.常量对象初始化

const对象一旦创建后其值就不能再改变,所以const对象必须初始化不能赋值(不能改变其值)。

(1)const int bufSize =512; //编译时初始化
          const int bufSize =get_size();  //运行时初始化

(2)用一个对象去初始化另一个对象

          int i=42;

          const int ci =i;   

          int j=ci;         //ci的常量特征仅仅在执行改变ci的操作时才会发生作用。

2.const的引用

2.1 对常量的引用不能被用作修改它所绑定的对象;

      对常量的引用,所绑定的对象可能是一个常量,也可能是一个非常量;

const int ci=1024;
const int &r1=ci;
r1=42;   // 错误;r1为常量的引用,不能用来修改它所绑定的对象;
int &r2=ci;  //错误;试图让一个非常量引用指向一个常量对象;假设此初始化合法,则可通过r2改变它引用的对象,但ci是常量,不能改变;
int i=42;
int &r1=i;
const int &r2=i;  //正确;但不允许通过让修改i的值;
r1=0;  //修改i的值;
r2=0;  //错误;
</pre><p>2.2 初始化const的引用</p><p><span style="font-size:14px"></span></p><h2><span style="font-size:14px">3.指向常量的指针(pointer to const)</span></h2><p><span style="font-size:14px">3.1 <span style="color:#ff0000">不能通过该指针改变其所指对象的值,没有规定那个对象的值不能通过其他途径改变。</span></span></p><p><span style="font-size:14px">      要想存放常量对象的地址,只能使用指向常量的指针;</span></p><p><span style="font-size:14px">       <span style="background-color:rgb(255,255,255)"><span style="color:#3366ff"><strong>const</strong></span></span></span><span style="font-size:14px"><span style="background-color:rgb(255,255,255)"><span style="color:#3366ff"><strong> </strong></span></span>int <span style="color:#cc33cc">*</span>pt=&ci</span><span style="font-size:14px">;</span></p><p><span style="font-size:14px">3.2 指向常量的指针可以指向常量对象,也可以指向非常量对象;</span></p><p><span style="font-size:14px">       pt=&i;  //指向了非常量对象,但是不能通过pt改变i的值,要改变i的值,通过其他途径。</span></p><h2><span style="font-size:14px">4. 常量指针(const pointer)</span></h2><p><span style="font-size:14px">4.1 常量指针指向非常量对象</span></p><p><span style="font-size:14px">      int <span style="color:#cc33cc">*</span><strong><span style="color:#3366ff">const </span></strong>pt=&i;  // 常量指针必须初始化</span></p><p><span style="font-size:14px">4.2 常量指针指向常量对象,因要想存放常量对象的地址,只能使用指向常量的指针,所以此时为指向常量对象的常量指针</span></p><p><span style="font-size:14px">      此时不论是pip所指的对象的值,还是指针pip自己存储的那个地址都不能改变。</span></p><p><span style="font-size:14px">      <strong><span style="color:#3366ff">const </span></strong>int <span style="color:#cc33cc">*</span><span style="color:#3366ff"><strong>const </strong></span>pip-&ci;</span></p><p><span style="font-size:14px">4.3 常量指针,常量对象中对象为指针,因常量对象必须初始化,所以常量指针必须初始化。</span></p><p><span style="font-size:14px">4.4 <span style="color:#ff0000">一旦初始化完成,常量指针的值(存放在指针中的那个地址)就不能再改变了,但其指向非常量对象的值可以改变。</span></span></p><h2><span style="font-size:14px">5. 常量成员函数(引入const成员函数)</span></h2><p><span style="font-size:14px">     void get_time() <span style="color:#3366ff;"><strong>const</strong></span>;</span></p><p><span style="font-size:14px">5.1 默认情况下,隐式的this指针的类型是指向非常量对象的常量指针,即Sales_data *const this,必须初始化。</span></p><p><span style="font-size:14px">    如果要初始化this,使其绑定一个常量对象,则需将this声明为指向常量的常量指针,即const <span style="font-family: monospace; font-size: 14px; white-space: pre; background-color: rgb(240, 240, 240);">Sales_data *const this;从而提高this的灵活性。</span></span></p><p><span style="font-size:14px"><span style="font-family: monospace; font-size: 14px; white-space: pre; background-color: rgb(240, 240, 240);">    然而,this是隐式的,不能显示定义。c++的做法是将const放在成员函数的参数列表之后,这样使用const的成员函数被被称作<strong><span style="color:#ff0000;">常量成员函数</span></strong>。紧跟在参数列表后面的<span style="color:#3366ff;">const表示this是一个指向常量的指针。</span></span></span></p><p><span style="font-size:14px"><span style="font-family: monospace; font-size: 14px; white-space: pre; background-color: rgb(240, 240, 240);"><span style="color:#3366ff;">    </span></span></span></p><p><span style="font-size:14px"><span style="font-family: monospace; font-size: 14px; white-space: pre; background-color: rgb(240, 240, 240);">6. 常对象</span></span></p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值