c++中的const函數


 

const變量的基礎:(這里給出一個小例子)

const *p://*p不可以改


int *const p;//p不可以改


const int *const p//二者都不可以改

正文:

 

在C++中,只有被聲明為const的成員函數才能被一個const類對象調用。

        要聲明一個const類型的類成員函數,只需要在成員函數參數列表后加上關鍵字const,例如,

class Screen {  
public:  
   char get() const;  
};  

      在類體之外定義const成員函數時,還必須加上const關鍵字,例如  

char Screen::get() const {  
   return _screen[_cursor];  
}  

   若將成員成員函數聲明為const,則該函數不允許修改類的數據成員。例如,

class Screen {  
public:
    int a;
public:  
 Screen()
{
    a=0;
}
void ok() const 
{
    a=1;//錯誤
 }  

};  

 下面的這個例子比較經典:

int a=0;
const int *p=&a;//把一個可以修改的變成不可以修改的----正確


const int b=100;
int *p=&b; //把一個不可以修改的變成可以修改了----錯誤

 總結:

1.const成員函數可訪問const成員變量和普通成員變量,但不能修改任何變量。檢查發生在編譯時。

 普通函數可訪問const成員變量,不可以修改。.(在訪問的時候會自動轉成const的)

(成員函數和變量之間都是可訪問不可以修改)

2.const對象只能訪問const成員函數,

(const對象只可訪問const的,也只可以被const的訪問)

3.const對象的成員變量不可以修改。

4.const成員函數不能調用非const成員函數,因為非const成員函數可以會修改成員變量

5.普通成員函數可以訪問非const對象的普通數據成員、const數據成員,但不可以訪問const對象的任意數據成員。(除了此點外,普通的都可以訪問const的)

6.const成員函數只是用於非靜態成員函數,不能用於靜態成員函數。

7.const成員函數的const修飾不僅在函數聲明中要加(包括內聯函數),在類外定義出也要加。

8.作為一種良好的編程風格,在聲明一個成員函數時,若該成員函數並不對數據成員進行修改操作,應盡可能將該成員函數聲明為const 成員函數。

參考資料:

https://www.cnblogs.com/shenckicc/p/6847103.html

https://www.cnblogs.com/myseasky/p/7458064.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM