在類的物件的初始化中為什麼需要建構函式?

2021-05-24 12:23:02 字數 648 閱讀 4364

//類需要建構函式

類是一種抽象結構,而不是一種實體,並不占用儲存空間。所以在定義類結構體的時候,是不可以對類中的成員進行初始化的。

例如以下的做法就是錯誤的:

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 子類 來來...