共享資料的保護

2021-09-26 15:52:43 字數 1185 閱讀 2709

一、常物件

1、常物件:它的資料成員值在物件的整個生存期間內不能被改變;也就

是說,常物件必須初始化,而且不能被更新;

宣告常物件的語法形式:

const 型別說明符 物件名;

例如:class a

……private :

int x;

int y;

};const a a(1,2); //a是常物件,不能被更新

二、用const 修飾的類成員

1、常成員函式:

1)使用const關鍵字修飾的函式為常成員函式;

2)宣告格式:

型別說明符 函式名(參數列) const;

**注 **:

1)這裡的const 本質上修飾的是this指標;

2) const關鍵字可以用於對過載函式的區分;

3)在常成員函式中不能呼叫非常成員函式;

4)在非常成員函式中可以呼叫常成員函式;

5)常成員函式可以被常物件所呼叫,也可以被非常物件呼叫;

6)非常成員函式只能被非常物件所呼叫;

3)例如:

int i=88;

const intp=&i;

int q=&i;

p=q; //正確

q=p; //錯誤

注釋:可以將非常指標賦給常指標;

但不可以將常指標賦給非常指標;

2、常資料成員:

1)使用const關鍵字修飾的資料成員;

2)如果在乙個類中說明了常資料成員,那麼任何函式都不能對該成員賦值

3)建構函式對常資料成員進行初始化,只能通過初始化列表;

4)類成員中的靜態變數和常量都應在類定義之外加以定義;

5)類的靜態常量如果是整型型別、列舉型別,那麼可以直接在類定義時為

它指定常量值;

3、常引用:

1)如果在宣告引用時用const 修飾,被宣告的引用就是常引用,常引用的對

象不能被更新;

2)宣告格式:

const 型別說明符 & 引用名

3)應用場景:當函式引數為引用時一般會加const關鍵字;

當函式引數不是引用而是物件時,會促發拷貝構造,而拷貝

構造會浪費時間;

4)類的拷貝建構函式的引數一般也採用常引用。

資料的共享與保護

1.生存期 1 靜態生存期 定義 若物件的生存期與程式的執行期相同,則稱它具有靜態生存期 方式 使用關鍵字static 在命名空間作用域宣告的物件都具有靜態生存期 2 動態生存期 區域性生存期物件誕生於宣告點,結束於宣告所在的塊執行完畢之時。例 變數的生存期與可見性 include using na...

保護共享資料的方法

1.關中斷 2.使用訊號量 3.禁止任務切換 關中斷是最激烈的方法。它會影響系統中所有中斷程式和其他任務的響應時間。如果關中斷則也禁止了任務切換,因為排程程式不能控制處理器切換。關中斷有兩個優點。1.它是在資料由任務 和中斷程式共享的情況下,唯一能工作的方法。因為中斷程式,不允許獲取訊號量。而禁止任...

資料共享與保護

作用域 是識別符號的有效範圍 可見性 識別符號是否可以引用的問題 程式執行到某一點。能夠引用到的識別符號,就是該處可見的識別符號。函式原型的作用域 函式原型中的引數,其作用域始於 結束於 例如,設有下列原型宣告 double area double radius radius 的作用域僅在於此,不能...