1. 程式人生 > >C++基礎知識—常量和常成員函式

C++基礎知識—常量和常成員函式

1.常量:程式執行的整個過程中,其值始終不可改變的量,const int a = 100;同int const a = 100。
2.指向常量的指標:const char  *c = "abc";   與 char const *c = "abc";相同,const的修飾符是char。
c[2] = 'd';//F 不能修改指向的常量
c = "def";//T陣列名退化為指標,指標的值可以改變,指向另一個變數
3.常指標:char *const c = "abc";//指標本身不可改變,所指資料可以改變,可以看成char (*const) c;const的修飾符是*指標。
c = "def";//F
c[2] = 'd';//T
4.指向常量的常指標:const char* const c = "abc";
  c = "def";//F
  c[2] = 'd';//F
5.一個指向常量的指標可以指向一個非常量物件,如2中line3。
6.一個指向非常量的指標不可以指向常量物件。
7.常成員函式:常成員函式是指由const修飾符修飾的成員函式,在常成員函式中不得修改類中的任何資料成員的值,可以理解為只讀函式,
通常我們用的各種get的函式應該宣告為const成員函式。
class classname { 
 public: 
  int fun() const; 
 ..... 
}
8..常成員函式中不能呼叫類中非常成員函式,有可能會簡潔修改資料成員。
9.常物件,只能通過物件呼叫const成員函式,當然建構函式和解構函式是可以用的。
10.類的非靜態資料成員可以宣告為mutable,然後就可以被該類的常量成員函式(當然也包括非常量成員函式)修改。
11.常成員函式的const是修飾成員函式的this指標,靜態成員變數不屬於任何物件,靜態成員沒有this指標,所以可以用常成員函式修改。