C++ const總結spa
const int a = 5; 指針
對象a是個int型的const對象對象
int const b = 5; it
跟上面相同,對象b也是個int型的const對象dva
const double *cptr; 原理
cptris a pointer to a double that is constobject
cptr指向的對象是double類型的const對象float
例如:error
const double pi = 3.14;總結
const double *cptr = π
const int universe = 42;
const int *cpv = &universe; //ok: cpv is const
Int *cpv = &universe; //error, universeis const and don’t fit common pointer
普通指針不能指向const對象。
double dval = 3.14;
const double *cptr;
cptr = &dval; //ok: but can’t changedval through cptr
const指針對象能夠指向普通的對象,可是不能使用指針修改該普通對象。
原理:const類型的cptr指針不可能知道它所指向的對象是const對象仍是普通對象,因此它對它所指向的全部對象都當成是const對象。Const指針能夠被認爲是「它們認爲它們本身指向const對象的指針」
const float *p; //Pointer to const object
指向const對象的指針
int errNumb = 0;
int *const curErr = &errNumb; //curErris a constant pointer
*curErr=12;
const指針,從右往左念:curErr is a constant pointer to an object of type int.
任何給const指針從新指向新對象的作法都是錯誤的。不過,能夠經過const指針修改對象的值。
總結:
const int *a; 或者 int const*b; 指向const對象的指針
int *const c; const指針
星號在const右邊時,爲指向const對象的指針- pointer to const
星號在const左邊時,爲const指針- const pointer