#include#include using namespace std; class A { private: int y; public: A(){ y=0; } int f1(int x) const // 此const代表此function不可以修改Data Member { x++; // y++; // Error! y為Data Member,因此不可以修改 return y; } const int f2(int x) // 回傳值為const { x++; y++; return y; } int f3(int const x) // 參數為const { // x++; // Error! x為const,不可以修改 y++; return y; } void f4(int const *x) // x is variable pointer to a constant integer,也可以寫成f4(const int *x) { // (*x)++; // Error! pointer x所指向的實體為const,因此不可以修改其值 *x++; // 此行的意思是*(x++),先修改pointer x的值,在指向實體 } void f5(int const &x) // x is variable reference to a constant integer { // x++; // Error! x就是一個const } void f6(int *const x) // x constant pointer to a variable integer { (*x)++; // *x++; // Error! Constant pointer x 不可以指向其他實體 } const char * f7() // 回傳一個variable pointer to a constant char { return "ABC"; } void f8(const int * const x) // x is constant pointer to a const integer { // (*x)++; // Error! x所指向的實體為const,因此不可以修改其值 // *x++; // Error! Constant pointer x 不可以指向其他實體 } }; int main(){ A a; int x=3; a.f1(x); a.f2(x); a.f3(x); // int x 會自動轉成const int x傳入 a.f4(&x) ; a.f5(x) ; const char *s = a.f7(); // 必須使用一個const來接const // s[0]='0'; // Error! 無法對const 變數進行改變動作 return 0; } 
Reference: http://csie-tw.blogspot.com/2010/03/c-constconst-pointer-pointer-to-const.html
沒有留言:
張貼留言