3 const物件和成員函式

2021-08-28 11:23:22 字數 1851 閱讀 2631

使用關鍵字const來說明物件,這樣的物件成為常物件,它的資料成員值在整個生存週期不能改變,所以常物件必須進行初始化,而且不能更新。格式如下:

const 《類名》 《物件名》(《初值》)
常物件只能呼叫常成員函式。

常成員函式格式如下:

《型別說明符》 《函式名》(《參數列》) const;
其中,關鍵字const加在參數列後面,它是函式型別的一部分。在該函式的實現部分也要加const關鍵字。

注意:

如果常成員函式在類內說明類外定義,則在函式的實現部分也要加上const關鍵字。

常成員函式不能更新物件的資料成員,也不能呼叫該類中沒有用const修飾的成員函式。

如果將物件宣告為常物件,則通過常物件只能呼叫它的常成員函式,而不能呼叫其它成員函式。

const關鍵字可以被用於參與對過載函式的區分,也就是說有沒有const是兩個不同的函式。

常資料成員:

注意:對於普通資料成員的初始化,既可以在函式體中進行,也可以在初始化列表中完成,常值資料成員,物件成員,從基類繼承來的資料成員等特殊成員的初始化必須採用初始化表。

應用: 當類的某個資料成員在建立時被初始化後,就不允許加以改變,則該資料成員應宣告為常資料成員。

方法:在該宣告前加上const修飾

如下:

class student;

};

當不初始化no資料成員時會提示錯誤,沒有預設建構函式。

注意:帶有初始化表的建構函式被呼叫時,先執行初始化表,再執行函式體。

例項:

設有若干學生資料,包括學號,姓名,數學成績和c++成績,求每位學生的總分,及每門課程的平均分

**分析如下:

首先是單個學生資訊的類:

class student 

void print_info();

~student();

};建構函式如下:

student::student(const char * name,const char * num, float m, float c)

因為不知道姓名和學號有多少位,所以在類中定義為字元指標,然後在建構函式中採用new建立儲存空間,以節省空間。

析構函式如下:

student::~student()

因為在建構函式中申請了動態空間,所以需要在析構函式中delete掉。此時沒有定義拷貝建構函式,所以不可以直接拷貝類。

然後是鍊錶的類:

class student_list 

~student_list();//析構函式

int create_list(int n);//建立乙個鍊錶

void print_list()const;//因為輸出資訊,所以不改變量值,所以採用const常成員函式

};

其中,析構函式為:

student_list::~student_list()

}

將建立的鍊錶中所有的student物件都delete掉。

建立鍊錶函式如下:

int student_list::create_list(int n)

p2->next = p1;

p2 = p1;

}return 0;

}

這樣就建立了乙個單向鍊錶。

主函式如下:

int main()

3 const 基本用法

includeusing namespace std brief main return 1 常量指標 表示這個指標是乙個指向常量的指標 變數 指標指向的物件是常量,那麼這個物件不能被更改。const int c m 或者 int const c m 2 指標常量 指標變數不可以修改,但是它指向的記...

const修飾物件和成員函式

用作自己對於const部分用法的記錄 詳情基本都寫在 注釋裡 const修飾成員函式 class myclass void fun const void funct const void func private int n void myclass fun const void myclass f...

C 中const成員函式和const物件

一 c 中函式和物件 1.const資料成員 跟const常量一樣,只是乙個在類裡 而且是在建構函式裡 乙個在類外而已,都必須初始化。2.const成員函式 即普通成員函式後再加const。它可以讀取資料成員的值,但不能修改它們。若要修改 時,資料成員前必須加mutable。以指定其可被任意更改。m...