一、非const物件可以初始化const物件
int i=0; const int ci=i;因為它們使用各自的儲存單元。
二、非const引用與const引用
1、const引用可以用常量、表示式、const物件或非const物件初始化
int i=0;const int &refi=i;
儘管i與refi使用同一單元,但i為非const,可以通過i改變此單元的值;而refi為const,不能通過refi改變此單元的值。
2、非const引用不能用const物件初始化
const int i=0;int &refi=i;
因為i為const,現在又希望通過refi改變i的值,與i的原定義矛盾。
第二點對於函式引數非常有意義:
函式引數為const引用,對應實參可以為常量、表示式、const物件或非const物件;
函式引數為非const引用,對應實參只能為非const物件。
三、指標與const
1、指向const物件的指標
const int *p; p可以指向const物件,也可指向非const物件。但都不能通過*p改變p所指向的物件。
2、const指標
int i=0;int* const pi=&i;
pi不能再指向別的物件,但可以通過*pi改變i的值。
3、指向const物件的const指標
const int i=0;
const int* const pi=&i;
四、定義與宣告
c++規定乙個程式中同乙個名字只能定義一次,可以宣告多次。但有例外。
在不同的檔案中,以下三種可以多次定義,但必須保證定義相同。
1、型別;
2、常量;
3、inline函式。
const引用與非const引用
const引用可讀不可改,與繫結物件是否為const無關,注意區分const引用與對const物件的引用 非const引用可讀可改,只可與非const物件繫結 const int ival 1024 const int refval ival ok both reference and object...
const與非const型別賦值問題
非指標型別const int c a 10 int b 20 b c a 正確 c a b error!關於這個問題,網上有說 非const變數賦給const變數,是非法的 請不要陷入這種容易混亂的邏輯。上述情況,比較正確的解釋。const int 在初始化之後,是不能再改變的。且const int...
const與非const型別賦值問題
const與非const型別賦值問題 以前總有個問題想不通,就是為什麼從const char到char的賦值就會出錯,而const int到int的賦值就沒問題呢?呵呵,不知道有沒有其他新手和我有相同的疑問呢?還算我運氣好,今天不知道怎麼會觸發了靈感,終於把這個小白問題想通了。答案就是 從const...