向較於c語言,c++增加了引用,通過修改乙個變數的引用,可以起到修改變數的目的。引用可以起到類似指標的提高效率的效果,但很也容易踩坑,可能以外的修改了某些變數的至。有了const,可以很大程度上避免踩到這類坑。這篇部落格整理了c++中const的常見用法,內附可編譯通過的例程。
#ifndef _common_h_
#define _common_h_
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
#endif
#include
"common.h"
class
consttest
void
printvalue()
void
printvalueconst()
const
void
constfuncmodify()
const
public
:const
int testintconst;
int testint;
mutable
int testintmutable;};
intmain
(void
)
編譯
g++
-o consttest consttest.cpp -o0 -g -wall -std=c++
11
執行
[root@***
]# .
/consttest
testintconst1:
0testintconstref0:
1testintconstref1:
1*intconstptr:
0*intconstptrconst:
0in printvalue
testintconst:
100testint:
400testintmutable:
300in printvalueconst
testintconst:
100testint:
400testintmutable:
100in printvalueconst
testintconst:
100testint:
200testintmutable:
100
指標可以理解為位址,在下面的宣告語句中
int test1 =
100;
int test2 =
200;
int* testptr =
&test1;
*testptr = test2;
testptr =
&test1;
testptr被定義為乙個(int*)型別的變數,testptr本身是指標,testptr本身也是位址。*testptr是該位址儲存的變數。位址可以改變,位址儲存的變數值也可以改變,這是不同的含義。再結合const,可以理解為位址可以是const型別,位址儲存的變數值可以是const型別,兩者可以都是const型別。
重點在於const和*的先後順序
C 中const用法總結
c 中用法總結 1.1.1.定義普通常量 使用 define來定義常量也是常用方法,但const也可以用來定義常量,在 effective c 中建議使用const代替 define來定義常量,因為const定義的常量具有型別資訊,而巨集沒有,所以使用const定義的常量在進行賦值操作時編譯器會進行...
C 中 Const用法小結
c 中const用法小結 關於c 中的const關鍵字的用法非常靈活,而使用const將大大改善程式的健壯性,參考了康建東兄的const使用詳解一文,對其中進行了一些補充,寫下了本文。1.const常量,如const int max 100 優點 const常量有資料型別,而巨集常量沒有資料型別。編...
C 中const用法總結
1.const 常量,如 const int max 100 優點 const 常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤。2.const 修飾類的資料成員。const 資料成員只在某個...