<p>const修饰符可以把对象转变成常数对象,什么意思呢? <br /> 意思就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用!<br /> 使用方法是:<font color="#0000ff"><br />const</font> <font color="blue">int</font> a=1;<font color="green">//这里定义了一个int类型的const常数变量a;</font>
</p>
<p> 但就于指针来说const仍然是起作用的,以下有两点要十分注意,因为下面的两个问题很容易混淆!我们来看一个如下的例子:</p>
<p>#include iostream</font>> <font color="blue"><br />using</font> <font color="blue">namespace</font> std; <font color="blue"><br />void</font> <font color="blue">main</font>(<font color="blue">void</font>) <br />{ <font color="blue"><br />const</font> <font color="blue">int</font> a=10; <font color="blue"><br />int</font> b=20; <font color="blue"><br />const</font> <font color="blue">int</font> *pi; <br />pi=&a; <font color="maroon"><br />cout</font> pi=&b; <font color="maroon"><br />cout</font> <br />cin</font>.get(); <br />}<br /> 上面的代码中最重要的一句是 const int *pi <br /> 这句从右向座读作:<font color="#ffffff">pi是一个指向int类型的,被定义成const的对象的指针</font>; <br /> 这样的一种声明方式的作用是<b><font color="#ff0000">可以</font>修改</b>pi这个指针<b>所指向的内存地址</b>却<strong><font color="#ff0000">不能</font>修改指向对象的值</strong>;<br /> 如果你在代码后加上*pi=10;这样的赋值操作是不被允许编译的!<br /> 好,看了上面的两个例子你对const有了一个基本的认识了,那么我们接下来看一个很容易混淆的用法! <br /> 请看如下的代码:
<p>#include iostream</font>> </p>
<p><font color="blue">using</font> <font color="blue">namespace</font> std; </p>
<p><font color="blue">void</font> <font color="blue">main</font>(<font color="blue">void</font>) <br />{ <br /><font color="blue">int</font> a=10; </p>
<p><font color="blue">const</font> <font color="blue">int</font> *<font color="blue">const</font> pi=&a; </p>
<p><font color="maroon">cout</font> <br /><font color="maroon">cin</font>.get(); <br />}</p>
<p>
<p> 上面的代码中最重要的一句是 const int *const pi <br /> 这句从右向座读作:<font color="#ffffff">pi是一个指向int类型对象的const指针</font>; </p>
<p> 这样的一种声明方式的作用是你<b>既<font color="#ff0000">不可以</font>修改pi所指向对象的内存地址</b>也<b><font color="#ff0000">不能</font>利用指针的解引用方式修改对象的值,也就是用*pi=10这样的方式</b>; </p>
<p> 所以你如果在最后加上*pi=20,想试图通过这样的方式修改对象a的值是不被允许编译的!</p>
<p> 结合上面的两点所说,把代码修改成如下形式后就可以必然在程序的任意的地方修改对象a的值或者是指针pi的地址了,<b>下面的这种写法常被用语涵数的形式参数,这样可以保证对象不会在涵数内被改变值!</b> </p>
<p>
<p>#include iostream</font>> <br /><font color="blue">using</font> <font color="blue">namespace</font> std; </p>
<p><font color="blue">void</font> <font color="blue">main</font>(<font color="blue">void</font>) <br />{ <br /><font color="blue">const</font> <font color="blue">int</font> a=10;<font color="green">//这句和上面不同,请注意! </font> </p>
<p><font color="blue">const</font> <font color="blue">int</font> *<font color="blue">const</font> pi=&a; </p>
<p><font color="maroon">cout</font> <br /><font color="maroon">cin</font>.get(); <br />}</p>
<p></p>
C++中的const限定修饰符
最新推荐文章于 2024-08-26 16:13:28 发布
