使用關鍵字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...