常物件:它的資料成員在整個的物件的生存期內不能改變。常物件必須進行初始化,而且不能被被新。
宣告 常物件的語法形式為:
const 型別說明符 物件名;
用const 修飾的類成員
1.常成員函式
型別說明符 函式名(參數列)const;
void print();
void print() const;
以上兩個是對print()函式的過載。
注:(1)const 是函式型別的乙個組成部分,因此在函式定義部分也要帶const關鍵字
(2)常物件只能呼叫常成員函式
(3)常成員函式不能改變目的物件的資料成員的值
#include
using namespace std;
class a
void print() const;
void a::print() const {
i+=1; //刪去此語句,程式將能執行成功
cout<<"i="a a(2);
a.print(); //在呼叫常成員函式時,暫時將此物件視為常物件!!! a物件呼叫的
return 0;
以上程式執行錯誤,錯誤為在為常成員函式定義時,改變了物件a的資料成員i的值
2.常資料 比較 const int i;static const int q; static int w ;
const int i;需要通過初始化列表來獲得初值,此值直到程式結束之前,不能對它進行更新
static int w;可以直接賦值 利用型別說明符 類名::w=? 來賦值,可以對它進行更新,但不會產生副本
static const int q;可以直接利用 const int 類名::q=?來賦值,不可以對它進行更新,也不會產生副本
3.常引用 形參變為常引用 ,引用的物件的資料不能被更新
例子:class a
func(const a & a) a中的資料成員不能改變,不能呼叫此函式的非const成員函式
const資料保護
const常量 const常量型別 常物件 必須進行初始化,不能被更新,通過常物件只能呼叫它的常成員函式 const 型別 物件名 常資料成員 常成員函式 函式內部不能對任何函式以外定義的變數進行任何修改 型別說明符 函式名 參數列 const 常引用 被引用的物件不能被更新 常陣列 陣列元素不能被...
共享資料的保護
一 常物件 1 常物件 它的資料成員值在物件的整個生存期間內不能被改變 也就 是說,常物件必須初始化,而且不能被更新 宣告常物件的語法形式 const 型別說明符 物件名 例如 class a private int x int y const a a 1,2 a是常物件,不能被更新 二 用cons...
資料的共享與保護
1.生存期 1 靜態生存期 定義 若物件的生存期與程式的執行期相同,則稱它具有靜態生存期 方式 使用關鍵字static 在命名空間作用域宣告的物件都具有靜態生存期 2 動態生存期 區域性生存期物件誕生於宣告點,結束於宣告所在的塊執行完畢之時。例 變數的生存期與可見性 include using na...