C++中的const限定修飾符

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

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

  使用方法是:

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

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

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

#include <iostream
using namespace std; 
 
void main(void

const int a=10; 
int b=20; 
 
const int *pi; 
pi=&a; 
cout <<*pi << "|" << a <<endl; 
pi=&b; 
cout <<*pi << "|" <<b <<endl; 
cin.get(); 
}

  上面的代碼中最重要的一句是 const int *pi
  這句從右向左讀作:pi是一個指向int類型的,被定義成const的對象的指針
  這樣的一種聲明方式的作用是可以修改pi這個指針所指向的內存地址不能修改指向對象的值

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

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

  請看如下的代碼:

#include <iostream
using namespace std; 
 
void main(void

int a=10; 
 
const int *const pi=&a; 
 
cout <<*pi << "|" <<a <<endl; 
cin.get(); 
}

  上面的代碼中最重要的一句是 const int *const pi
  這句從右向左讀作:pi是一個指向int類型對象的const指針

  這樣的一種聲明方式的作用是你不可以修改pi所指向對象的內存地址不能利用指針的解引用方式修改對象的值,也就是用*pi=10這樣的方式;

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

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

#include <iostream
using namespace std; 
 
void main(void

const int a=10;//這句和上面不同,請注意! 
 
const int *const pi=&a; 
 
cout <<*pi << "|" <<a <<endl; 
cin.get(); 
}

發佈了39 篇原創文章 · 獲贊 9 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章