關鍵字const:
1、用關鍵字const定義變數指所定義的常量。即恆定的變數,即不可改變的變數。
例: const int i=10;
此時 i 就是乙個整型的常量,其值不能改變。
在c++中如果用const定義乙個物件,那麼物件中的成員變數就是常數,不能改變(只能為初始化的值),如果用const定義類中的成員函式,那麼這個函式就不能去改變物件的成員變數。(相當於this指標為指向常量的指標)
例: const car car;//car為類 car為定義的物件 car為常量
2、const與#define 的區別:
#define 的特點是純粹的文字替換,不存在型別的問題,而const 定義的常量則是有型別的常量,這樣編譯器可以更多的察覺錯誤。
3、當 指標 遇到 const 時:
const int *p;//指向整型常量的指標,即指向的是常量,指標也可以指向的別的位址,但指向的常量的值是不能改變的。
int * const p;//指向整型變數的常量指標,即指向的位址不可以改變,但指向的是變數,是可以賦值的
const int * const p;/指向整型常量的常量指標。
const int *p; //指向整型常量的指標
int i=10,j=10; //
p=&i; //指標指向i 正確
p=&j; //指標指向j 正確
*p=1; //錯誤
j=10; //正確
指向常量的指標,其指向的物件可以改變,但其指向的內容不允許改變!!!
在c++中有乙個const指標的應用,就是在函式傳參的時候,本來傳值就能解決的問題,但是考慮到程式的穩定性,有如下分析:(假如所傳的值是乙個物件)
1、如果這個物件很大,所以傳值的話,會很浪費記憶體和時間,並且在子函式開始和結束要呼叫建構函式和析構函式。
2、如果傳入指標的話,就是把物件的位址傳入了,這樣物件的成員變數就被暴露了,本意是不改變物件的成員變數,但這樣會存在隱患。所以我們想到利用const指標,傳入的是指向常量的指標。即:(const car *p或const car * const p)的形式。這樣,在函式中就不會改變物件的成員變數了,也不存在物件拷貝的問題。
3、(c++中)還是上面這個問題,使用引用照樣能解決問題,比const指標還方便些,用(const car &rp)
關鍵字const用法詳解
摘自 物件導向是c 的重要特性,但是c 在c的基礎上新增加的幾點優化也是很耀眼的 以下幾點很重要,學不好後果會很嚴重 const 限定符 1.宣告變數只能被讀 const int i 5 int j 0 i j 非法,導致編譯錯誤 j i 合法 2.必須初始化 const int i 5 合法 co...
關鍵字const的詳解
1 const變數不是常數,是乙個變數 左值 只是你不能修改它 2 在定義該const變數時,必須需要對它進行初始化 3 對指標來說,可以指定指標本身為const,也可以指定指標所指的資料為const,或二者同時指定為const 4 在乙個函式宣告中,const可以修飾形參,表明它是乙個輸入引數,在...
c關鍵字const詳解
最近被人問了個技術問題,感觸很深,就是關於const關鍵字的基本用法判斷,看到這個問題我其實挺開心的,因為去年我在書上記錄過c 語言的幾個常用關鍵字的基本用法,最近用的少了,都有點生疏遺忘了,技術就是一把容易生鏽的dao,得經常磨磨才不怕問 1.const修飾變數 const 關鍵字用的比較多的用法...