[日記] const

看板LTJH-94306作者 (可憐的小孩)時間11年前 (2012/10/29 09:38), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
#include<iostream> #include<string> 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 變數進行改變動作 system("pause"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.241.158.32
文章代碼(AID): #1GZTuKBb (LTJH-94306)