Inside The C++ Object Model(二)

============================================================================
2-0. 關鍵字explicit被引入C++,提供給程序員一種方法,使他們可以制止「單一參數的constructor」被當作一個conversion運算符。程序員


============================================================================
2-1.Default Constructor的建構操做:
「default constructor...在須要的時候被編譯器產生出來」。關鍵字眼是「在須要的時候」,被誰須要?作什麼事情? 期間的差異在因而程序的須要,仍是編譯器的須要。程序若是有須要,那是程序員的責任,此時並不會合成出一個default constructor。只有當編譯器須要它的時候,纔會合成它,而且被合成出來的constructor只執行編譯器所需的行動。一個nontrivial default constructor就是「編譯器所須要」的那種,必要的話會由編譯器合成出來。下面討論nontrivial default constructor的四種狀況:
(1)帶有「Default Constructor」的Member Class Object。函數

(2)「帶有Default Constructor」的Base Class。spa

 

(3) 「帶有一個Virtual Function」的Class。3d



(4) 「帶有一個Virtual Base Class」的Class。指針



總結:blog



============================================================================
2-2. Copy Constructor的建構操做
有三種狀況,會以一個object的內容做爲另外一個class object的初值。
(1)明確地以一個object的內容做爲另外一個class object的初值;
(2)當object被看成參數交給某個函數時;
(3)當函數傳回一個class object時;遞歸

Default Memberwise Initialization
若是class沒有提供一個explicit copy constructor時,當class object以「相同class的另外一個object」做爲初值時,其內部是以所謂的default memberwise initialization手法完成的,也就是把每個內建的或派生的data member(例如一個指針或一數目組)的值,從某個object拷貝一份到另外一個object身上。不過它並不會拷貝其中的member class object,而是以遞歸的方式施行memberwise Initialization。以下:ci


Bitwise Copy Semantics(位逐次拷貝)編譯器

 

============================================================================
2-3. 程序轉化語意學it



============================================================================
2-4. 成員的初始化


============================================================================

相關文章
相關標籤/搜索