c++ 在類函數後加const的意義

咱們定義的類的成員函數中,經常有一些成員函數不改變類的數據成員,也就是說,這些函數是"只讀"函數,而有一些函數要修改類數據成員的值。若是把不改變數據成員的函數都加上const關鍵字進行標識,顯然,可提升程序的可讀性。其實,它還能提升程序的可靠性,已定義成const的成員函數,一旦企圖修改數據成員的值,則編譯器按錯誤處理。 const成員函數和const對象 實際上,const成員函數還有另一項做用,即常量對象相關。對於內置的數據類型,咱們能夠定義它們的常量,用戶自定義的類也同樣,能夠定義它們的常量對象。
一、非靜態成員函數後面加const(加到非成員函數或靜態成員後面會產生編譯錯誤)
二、表示成員函數隱含傳入的this指針爲const指針,決定了在該成員函數中, 任意修改它所在的類的成員的操做都是不容許的(由於隱含了對this指針的const引用);
三、惟一的例外是對於mutable修飾的成員。加了const的成員函數能夠被非const對象和const對象調用,但不加const的成員函數只能被非const對象調用c++

char getData() const{         
		return this->letter;
}

c++ 函數前面和後面 使用const 的做用:函數

  • 前面使用const 表示返回值爲const
  • 後面加 const表示函數不能夠修改class的成員

請看這兩個函數this

const int getValue();指針

int getValue2() const;code

/*
 * FunctionConst.h
 */

#ifndef FUNCTIONCONST_H_
#define FUNCTIONCONST_H_

class FunctionConst 
{ public: int value; FunctionConst(); virtual ~FunctionConst(); const int getValue(); int getValue2() const; }; #endif /* FUNCTIONCONST_H_ */

源文件中的實現對象

/*
 * FunctionConst.cpp 
 */

#include "FunctionConst.h"

FunctionConst::FunctionConst():value(100){
    // TODO Auto-generated constructor stub

}

FunctionConst::~FunctionConst(){
    // TODO Auto-generated destructor stub
}

const int FunctionConst::getValue(){
    return value;//返回值是 const, 使用指針時頗有用.
}

int FunctionConst::getValue2() const{
    //此函數不能修改class FunctionConst的成員函數 value value = 15;//錯誤的, 由於函數後面加 const return value; }
相關文章
相關標籤/搜索