共享資料的保護 利用const

2021-08-08 12:50:22 字數 1023 閱讀 8184

常物件:它的資料成員在整個的物件的生存期內不能改變。常物件必須進行初始化,而且不能被被新。

宣告 常物件的語法形式為:

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...