C 中const使用注意要點(二)

2022-05-04 04:18:10 字數 891 閱讀 5561

當const修飾類的成員變數

1、const修飾類的非靜態成員時必須在建構函式初始化列表上初始化;

在建構函式內會提示表示式必須是可修改的左值,因為在建構函式內並不是初始化,僅僅是賦值,而const型別必須初始化。

2、const修飾類的靜態成員必須在定義的地方對它初始化,因為靜態成員是無法在建構函式初始化列表上初始化的;

當const修飾類的成員函式時

1、用const修飾類的物件,那麼該物件不能呼叫任何修改類成員的方法;

2、把const放在成員函式後,比如void f() const {},那麼該函式內不能修改類成員;

例外1:可以將this指標強制轉換成非const指標來在2的情況下改變類成員

class test

void f() const

};

例外2:使用mutable關鍵字,可以突破const的限制,被mutable修飾的變數將永遠處於可變狀態

實際往往會使用類的常引用來作為函式引數,這樣就不會修改成員變數的值,但是要注意的是呼叫的方法後必須宣告const

class

myclass

private

:

intval;

};myclass copy(

const myclass&bc)

雖然我們知道get函式不會改變成員變數,但是編譯器不知道,這樣它就會覺得你呼叫了可能改變成員變數的函式(get)。

產生非常常見的編譯錯誤:

error c2662: 「myclass::get」: 不能將「this」指標從「const myclass」轉換為「myclass &」

1> 轉換丟失限定符

ashx session 使用注意要點。

最近做乙個專案,有使用ajax呼叫ashx檔案 其中ashx檔案裡面有用到session,但是總無法獲取session,經過除錯,出現的錯誤的原因 大體如下 session loginname 為空,無法tostring context.session id context.session 引發了 ...

const的使用注意

1.const成員變數也不能在類定義處初始化,只能通過建構函式初始化列表進行,const資料成員 只在某個物件生存期內是常量,而對於整個類而言卻是可變的。2.型別說明符 函式名 參數列 const 1 首先const在函式後面,只能應用於類的成員函式。2 const表示在函式的執行過程中不允許修改類...

C 中const的運用及注意

在我學習c 的過程中,對const的應用不可不說是最容易混亂和最容易出錯的。但是const卻是乙個好東西,每乙個c 程式設計師都必須掌握它。以下為本人的一點總結。1 用const 修飾函式的引數 如果引數作輸出用,不論它是什麼資料型別,也不論它採用 指標傳遞 還是 引用傳遞 都不能加const 修飾...