//類需要建構函式
類是一種抽象結構,而不是一種實體,並不占用儲存空間。所以在定義類結構體的時候,是不可以對類中的成員進行初始化的。
例如以下的做法就是錯誤的:
class student
因為型別沒有記憶體空間的,所以沒有辦法存放初始化的資料。
而類的物件不同,需要容納資料,占用空間。如果初始化乙個student物件,那麼stud1是占用記憶體空間的;
student stud1;
stud1 = ;
可以使用lilei,學號是2011,成績是98分,來初始化stud1這個同學。這種情況成立的前提條件是name, number, score對物件來說都是可見(public)的。
類中有3種訪問模式:public、private和protested。
如何是private的,即不可見的,那我們就不可以這樣進行初始化,因為對於不可見的成員,不知道哪些需要進行初始化,而哪些又是不用的。
如果是同乙個人用定義的類,使用者也是自己,可以知道類中的全部成員,但是如果是別人給的類,我什麼就根本不知道其中有多少的成員函式。
所以通過引入建構函式,來解決類的物件的初始化問題。
在類中定義建構函式,建構函式和類同名,在類定義體外也可以定義。
bss段為什麼需要初始化?
我們都知道 bss段需要初始化,但是這是為什麼呢?通過瀏覽資料,我們都會發現,bss bin hex 中的,因為全都是 0bss bss段 一堆 0 將來真正執行程式的時候,再根據這兩個資料進行 bss段的初始化就行了。以上這段文字是網上的資料說的。但是,我可不可以讓 bssnandflash 拷貝...
C 為什麼需要成員初始化列表
將建構函式分為兩個階段的執行過程 初始化階段和建構函式函式體階段。既然稱它為成員初始化列表,那麼該階段在初始化階段完成。那麼類成員變數不外乎類型別和非類型別。而對於非類型別而言,此時 無論是在初始化表中還是函式體內完成賦值效果是一致的,即並未初始化。表現的有點不同的是類型別 test1 includ...
為什麼子類的初始化列表不能初始化父類的成員
class rectangle rectangle int x,int y a x b y public int a int b class square public rectangle error c2614 square 非法的成員初始化 a 不是基或成員.square int x 子類 來來...