天天看點

入門教程:C++中的const限定修飾符

const修飾符可以把對象轉變成常數對象,什麼意思呢?

  意思就是說利用const進行修飾的變量的值在程式的任意位置将不能再被修改,就如同常數一樣使用!

  使用方法是:

const int a=1;//這裡定義了一個int類型的const常數變量a;

  但就于指針來說const仍然是起作用的,以下有兩點要十分注意,因為下面的兩個問題很容易混淆! 

我們來看一個如下的例子:

入門教程:C++中的const限定修飾符

 #include  < iostream >   

入門教程:C++中的const限定修飾符

 using   namespace  std;  

入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符

 void  main( void )  

入門教程:C++中的const限定修飾符

 {  

入門教程:C++中的const限定修飾符

 const   int  a = 10 ;  

入門教程:C++中的const限定修飾符

 int  b = 20 ;  

入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符

 const   int   * pi;  

入門教程:C++中的const限定修飾符

pi =& a;  

入門教程:C++中的const限定修飾符

cout  <<* pi  <<   " | "   <<  a  << endl;  

入門教程:C++中的const限定修飾符

pi =& b;  

入門教程:C++中的const限定修飾符

cout  <<* pi  <<   " | "   << b  << endl;  

入門教程:C++中的const限定修飾符

cin. get ();  

入門教程:C++中的const限定修飾符

}

  上面的代碼中最重要的一句是 const int *pi 

這句從右向座讀作:pi是一個指向int類型的,被定義成const的對象的指針; 

這樣的一種聲明方式的作用是<b>可以修改</b>pi這個指針<b>所指向的記憶體位址</b>卻不能修改指向對象的值;

如果你在代碼後加上*pi=10;這樣的指派操作是不被允許編譯的!

  好,看了上面的兩個例子你對const有了一個基本的認識了,那麼我們接下來看一個很容易混淆的用法! 

請看如下的代碼:

入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符

 int  a = 10 ;  

入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符

 const   int   * const  pi =&amp; a;  

入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符

cout  &lt;&lt;* pi  &lt;&lt;   " | "   &lt;&lt; a  &lt;&lt; endl;  

入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符

  上面的代碼中最重要的一句是 const int *const pi 

這句從右向座讀作:pi是一個指向int類型對象的const指針; 

這樣的一種聲明方式的作用是你<b>既不可以修改pi所指向對象的記憶體位址</b>也<b>不能利用指針的解引用方式修改對象的值,也就是用*pi=10這樣的方式</b>; 

是以你如果在最後加上*pi=20,想試圖通過這樣的方式修改對象a的值是不被允許編譯的!

結合上面的兩點所說,把代碼修改成如下形式後就可以必然在程式的任意的地方修改對象a的值或者是指針pi的位址了,<b>下面的這種寫法常被用語涵數的形式參數,這樣可以保證對象不會在涵數内被改變值!</b>

入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符

 const   int  a = 10 ; // 這句和上面不同,請注意!   

入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符
入門教程:C++中的const限定修飾符

入門教程:C++中的const限定修飾符

繼續閱讀