歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C++中const限定符的幾種常見用法

const對象
將一個對象定義為不可更改的對象,稱為const對象。
例:const int a = 512 ;
注解:因為const對象在定義後就不能修改,所以定義時必須初始化。

const引用
        C++ Primer中寫道“const引用是指向const對象的引用”。我認為至少不夠精確,這句話意在強調非const引用是指向const對象是錯誤的,但是沒有說明const引用也可以指向一般的對象。我給出的定義是:const引用是這樣的一種引用,它只能讀取指向對象的值,但不能修改其指向對象的值。
例:const int a = 512;
        int b = 1024;
      const int &c = a;      //正確!
      const int &d = b;      //正確!
      int &e = a;                //錯誤!

指向const對象的指針
        這是C++Primer對這種指針的稱呼。這種用法跟上文的const引用是類似的。同樣,把這種指針稱作“指向const對象的指針”是不夠精確的,因為它也可以指向非const對象,只不過這種指針“自以為指向const對象”,即,這種指針只能讀取指向對象的值,但不能修改其指向對象的值,無論這個對象是不是const對象。
例:const int a = 512;
      int b = 1024;
      const int *c = &a;  //正確!
      c = &b;                  //正確!

      int *d = &a;            //錯誤!

const指針

        這也是C++Primer對這種指針的稱呼。這種說法容易與“const引用”混淆,事實上表達的意義完全不同。const指針的特點是——本身的值不能修改。任何企圖給const指針賦值的行為(即使給該指針賦本身的值)都會導致編譯時的錯誤。

例:  int a = 0;

        int *const b = &a;

        b = c;                //c是另外一個指針,錯誤!

        b = b;                //賦本身的值,錯誤!

指向const對象的const指針

別被繞暈了,其實就是上述兩種指針的結合體。這種指針,既不能修改本身的值,也不能修改其所指向對象的值。

例:const int a = 0;

      const int *const b = &a;

const成員函數

又被稱作常量成員函數。這種成員函數只能讀取而不能修改其所屬對象的數據成員。

例: class A{

    public:

        bool IsSame(const A &a)const;

                };

其它相關:

const_iterator

每種容器類型中都定義了const_iterator類型,這種類型只能用於讀取容器內的元素,但不能改變其值。

例:vector<string> text;

      for(vector<string>::const_iterator iter = text.begin(); iter! = text.end(); ++iter)

      {函數體}

暫時就寫這麼多,如有新發現會持續更新。

Copyright © Linux教程網 All Rights Reserved