const成員函式

2021-07-05 12:22:45 字數 1270 閱讀 9891

一.關於const成員函式的呼叫

const物件只能呼叫const成員函式:

[cpp]view plain

copy

#include

using

namespace

std;  

class

a    

void

fun()  

};    

intmain()    

輸出:const 成員函式!

但是如果把第以1個fun注釋掉就會出錯:error c2662: 「a::fun」: 不能將「this」指標從「const a」轉換為「a &」。

但是const成員函式可以被非const 物件呼叫:

[cpp]view plain

copy

#include

using

namespace

std;  

class

a    

/*  void fun()

*/};    

intmain()    

該段**輸出:const 成員函式!

當然非const物件可以呼叫非const成員函式

二.有const修飾的成員函式,只能讀取資料成員函式,不能改變資料成員;沒有const修飾的成員函式,對資料成員則是可讀可寫的。

但是如果只有指標是資料成員,而指標所指的物件不屬於物件,那麼const成員函式可能修改指標所指物件的值。

#include #include using namespace std;

class ctextblock

~ctextblock()

char & operator(size_t position) const

void display() const

private:

char *ptext;

};int main()

最後的輸出結果為"jello"。建立乙個常量物件並設以某值,雖然只是呼叫了const成員函式,但還是改變了它的值。

mutable釋放掉non-static變數的const約束。

private:

char *ptext;

mutable size_t textlength;

mutable bool lengthisvalid;

const成員函式

prime c 在類sales item中,same isbn函式定義如下 bool sales item same isbn const sales item rhs const const 成員函式的引入 跟在 sales item 成員函式宣告的形參表後面的 const 所起的作用了 cons...

const成員函式

我們知道,在c 中,若乙個變數宣告為const型別,則試圖修改該變數的值的操作都被視編譯錯誤。例如,cpp view plain copy const char blank blank n 錯誤 物件導向程式設計中,為了體現封裝性,通常不允許直接修改類物件的資料成員。若要修改類物件,應呼叫公有成員函...

const成員函式

在c 中,若乙個變數宣告為const型別,則試圖修改該變數的值的操作都被視編譯錯誤.例如 const int a 1 a 2 錯誤 c 的const類成員函式 物件導向程式設計中,為了體現封裝性,通常不允許直接修改類物件的資料成員。若要修改類物件,應呼叫公有成員函式來完成。為了保證const物件的常...