const用法的解惑

2022-04-10 13:58:04 字數 2078 閱讀 5496

引用自: 

雖然看過c++方面不少的資料,但我現在仍然是乙個初學者,編過c++的一些程式,但不多。const修飾詞做為c++乙個重要的概念,務必要弄清楚才行,看到網上乙個c++學習者的部落格上歸納的很不錯,很精煉。以下是參考的鏈結:

html

const是c++的關鍵字之一,與其他的關鍵字相比,c++初學者可能對於const的使用會一時摸不著頭腦,若能正確的使用const,將使你的程式更加robust!

先看下面的一些**:

inti =5

;const

int*

ip =&i;

intconst

*ip =&

i;int

*const

ip =&i;

const

int*

const

ip =

&i; 

對於上面四個條語句,你能說出它們之間的區別嗎?

2)和3)中const修飾的是*ip,

這表明ip所指向的變數i是const的,類似*ip =

1的操作編譯的時候都會報錯;4)const修飾的是ip,說明指標本身是const,修改指標指向的變數是合法的,而類似++ip修改指標本身的操作是

違法的;5)指標本身和指向的變數都是const的。

const的用法主要體現在函式宣告中的應用,它既可以修飾函式引數,還可以修飾函式的返回值,此外對於類的成員函式,它還可以修飾整個函式。下面是乙個簡單簡單的二維向量類:

1class

vector2d

6vector2d( 

const

vector2d 

&vec ) : x( vec.x ), y( vec.y )  

//修飾引數

7{}8

float

getx() 

const

//修飾整個函式     

9const

vector2d 

operator+( 

const

vector2d 

&rval ) 

const

//修飾引數,返回值和整個函式

1011};

12--const修飾函式引數

在copy建構函式中,const修飾的

是函式的引數,呼叫函式的時候,用相應的變數初始化const常量,則在函式體中,按照const所修飾的部分進行常量化,如形參為const

vector2d &vec,則不能對傳遞進來的引用物件的進行改變,從而保護了原物件的屬性。

[tips]const通常用於修飾指標或引用型別的引數。

--const修飾返回值

在過載的向量加法運算子的函式中,返回值用const修飾,這樣如下的賦值操作就非法的:

vector2d vec1, vec2, vec3;

(vec1+vec2) = vec3;

[tips]一

般情況下,函式的返回值為某個物件時,如果將其宣告為const時,多用於運算子的過載。通常,函式返回值為某個物件或物件的引用時,不用const來修

飾。因為,這樣返回的例項只能訪問public成員和const成員函式,並且賦值操作也是非法的,這樣的用法是非常罕見的。

--const修飾類的成員函式

對於vector2d::getx()函式,因為它不會修改成員資料,若宣告成const,如果函式實現中修改了成員變數,編譯的時候將報錯,這樣程式會更加的robust。

[tips]

a.在你搞清楚const的用法之後,請大膽使用;

b.在引數中使用const應該使用引用或指標,而不是一般的物件例項;

c.不要輕易的將函式的返回值型別定為const;

d.除了過載操作符外一般不要將返回值型別定為對某個物件的const引用。

看完了這篇文章,很受感觸,寫的很好,作者肯定是在平時學習與工作中不斷的積累才把這些經驗總

結寫下來的,才給予我們這些初學者一些借鑑與經驗,讓我們少走彎路。當然,這些還只是相對來說形式比較簡單的情形,在複雜的情況下,我們更是要保持清醒的

大腦,寫程式就是這樣,一定要讓自己的大腦清醒,思路流暢,這樣才會少出錯誤。

c++學習中,希望每天都有進步!

C 之const用法解惑

首先,說下最基本的const用途 case1 const修飾變數,表示是常量,程式中不能更改,存放在常量儲存區。例如 const int a 100 case2 const修飾函式形參,表示傳入的引數在函式內部不能修改。例如 class test case3 非靜態成員函式後置const,表示成員函...

Const與Const的用法

const 是c 中常用的型別修飾符,常型別是指使用型別修飾符const說明的型別,常 型別的變數或物件的值是不能被更新的。const的作用 1 可以定義常量 即const int a 5 a就是乙個被const修飾的常量,它在程式執行期間是無法被改變的!2 保護被修飾的東西 例如乙個函式的首部為v...

const的常見用法

const用法主要是防止定義的物件再次被修改,定義物件變數時要初始化變數 下面我就介紹一下幾種常見的用法 1.用於定義常量變數,這樣這個變數在後面就不可以再被修改 const int val 10 val 20 錯誤,不可被修改 2.保護傳參時引數不被修改,如果使用引用傳遞引數或按位址傳遞引數給乙個...