一、常物件
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 的作用域僅在於此,不能...