const與非const型物件

2021-04-18 20:46:54 字數 886 閱讀 8021

一、非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...