1.乙個類裡, c o n s t恢復它在c中的一部分意思。它在每個類物件裡分配儲存並代表乙個值,這個值一旦被初始化以後就不能改變。在乙個類裡使用c o n s t的意思是「在這個物件壽命期內,這是乙個常量」。然而,對這個常量來講,每個不同的物件可以含乙個不同的值。這樣,在乙個類裡建立乙個c o n s t時,不能給它初值。這個初始化工作必須發生在建構函式裡,並且,要在建構函式的某個特別的地方。因為c o n s t必須在建立它的地方被初始化,所以在建構函式的主體裡, c o n s t必須已初始化了,否則,就只有等待,直到在建構函式主體以後的某個地方給它初始化,這意味著過一會兒才給c o n s t初始化。當然,無法防止在在建構函式主體的不同地方改變c o n s t的值。
2.建構函式初始化表示式表—--顧名思義,是出現在建構函式的定義裡的—--是乙個出現在函式引數表和冒號後,但在建構函式主體開頭的花括號前的「函式呼叫表」。這提醒人們,表裡的初始化發生在建構函式的任何**執行之前。這是把所有的c o n s t初始化的地方
3.在類裡的c o n s t意思是「在這個特定物件的壽命期內,而不是對於整個類來說,這個值是不變的( c o n s t)」。
4.使用e n u m是不會占用物件中的儲存空間的,列舉常量在編譯時被全部求值
5.c o n s t放在函式宣告前意味著返回值是常量,但這不合語法。必須把c o n s t識別符號放在參數列後。
6.建構函式和析構函式都不是c o n s t成員函式,因為它們在初始化和清理時,總是對物件作些修改。q u o t e ( )成員函式也不能是c o n s t函式,因為它在返回說明裡修改資料成員l a s t q u o t e。然而l a s t q u o t e ( )沒做修改,所以它可以成為c o n s t函式,而且也可以被c o n s t物件c q安全地呼叫。
7.如果我們想要建立乙個c o n s t成員函式,但仍然想在物件裡改變某些資料,這時該怎麼辦呢?這關係到按位c o n s t和按成員c o n s t的區別。按位c o n s t意思是物件中的每個位是固定的,所以物件的每個位映像從不改變。按成員c o n s t意思是,雖然整個物件從概念上講是不變的,但是某個成員可能有變化。
8.就像建立c o n s t物件一樣,程式設計師也可以建立v o l a t i l e物件,甚至還可以建立const volatile物件,這個物件不能被程式設計師改變,但可通過外面的工具改變
C 程式設計思想筆記 隱藏實現
友元 如果程式設計師想允許不屬於當前結構的乙個成員函式訪問結構中的資料,可以在類中宣告這個函式為友元。友元必須子啊乙個類中宣告,巢狀友元 乙個巢狀的struct並不能自動地獲得訪問私有成員的許可權,要取得訪問私有成員的許可權,要先宣告乙個巢狀的struct,然後宣告它是全域性範圍使用的乙個友元。友元...
C 程式設計思想重點筆記(上)
c和c 指標的最重要的區別在於 c 是一種型別要求更強的語言。就void 而言,這一點表現得更加突出。c雖然不允許隨便地把乙個型別的指標指派給另乙個型別,但允許通過void 來實現。例如 bird b rock r void v v r b v c 不允許這樣做,其編譯器將會給出乙個出錯資訊。如果真...
c 程式設計思想
c和c 指標的最重要的區別在於 c 是一種型別要求更強的語言。就void 而言,這一點表現得更加突出。c雖然不允許隨便地把乙個型別的指標指派給另乙個型別,但允許通過void 來實現。例如 bird b rock r void v v r b v c 不允許這樣做,其編譯器將會給出乙個出錯資訊。如果真...