1樓:匿名使用者
此為類别範本,該建構函式使用了初始化列表,等價於
seqlist(int sz=defaultsize)
}對於const、引用型別成員在建構函式內對其初始化是不起作用的,必須在初始化列表中初始化。
2樓:篤俠
簡單地講,類别範本是以型別作為形式引數的類。用類别範本例項化一個物件時,首先用實參型別替代類别範本定義中的型別形參而形成一個具體的類(模板類),然後用這個具體的類建立物件。
比如這個程式:
seqlist是類别範本(type為型別形參名),其功能是實現元素型別為type的順序表。
當用seqlist例項化一個物件(比如 seqlisttest(15); )時,首先用實參型別(int)替代類别範本(seqlist)定義中的型別形參(type)而形成一個具體的類(模板類seqlist),這個類的建構函式可以看成:
seqlist(int sz=defaultsize):m_nmaxsize(sz),m_ncurrentsize(-1)
}所以,執行 seqlisttest(15); 建立test物件時,test物件的資料成員m_nmaxsize的值為15,m_ncurrentsize的值為-1,m_elements的值為新分配的能夠存放15個int型資料的記憶體塊的首位元組地址。
3樓:匿名使用者
大哥我菜鳥。。一點也不懂。。
在c++中物件成員必須在含有引數的建構函式中初始化,並且在初始化成員列表中?這句話有問題吧?
4樓:周生
看你的成員變數型別和繼承方式了,公有成員變數和公有繼承,直接賦值就行了。私有成員變數,繼承之後要在初始化列表中初始化
初始化表的必要性
1) 類中包含常量和引用型的成員變數。必須通過建構函式和初始化表顯式地對其進行初始化。
2) 在子類中顯式地構造其基類部分。
class a
a (int n) : m_n (n) {}private:
int m_n;
};class b
b (int n) : m_a (n) {}private:
a m_a;};
5樓:
不一定在有引數建構函式初始化,不一定要在列表中初始化。
希望能幫到你,**不清楚再問。
例如:#include
using namespace std;
class a
};int main()
6樓:楊星光
1建構函式可以沒有引數
2如果沒有引數,那麼在建構函式中如資料成員直接賦值
如:class student;}
7樓:匿名使用者
可以無參建構函式初始化,不一定要在成員列表中,這只是其中的一種方式
C 中,為什麼派生類的建構函式如果沒有提供基類的初始化器
a774888179巨蟹 c 中成員變數的初始化是在進入建構函式體之前的,如果你需要初始化一個派生類物件,先會呼叫基類的建構函式,然後為初始化列表中的派生類成員變數進行初始化,如果你的部分或全部的成員變數選擇在函式體內賦值,那麼編譯器會先為這些成員變數進行預設的初始化 呼叫其預設建構函式 然後使用c...
下面四組中,按字母表順序排列的那組是急急急急
jx熱愛課本 一.c二.a 三.a四.a 五.zai miao shi sha jian xia六.市 以 七.誼 役 驛 藝 益 屹 衣 譯八.遙 要 好 夭 靠 稍九.10 9 3 8 6 2 7 4 5 1十.抱歉,不會打音調。十一.zhan chen pai cu fen第二聲 hao 十二...
建構函式是用來初始化所定義的物件,如果類中沒有定義任何建構函式,則該類的對
不對,c 裡不寫類的建構函式時,編譯器會為類建立一個預設的建構函式,雖然這個函式什麼都不做,但是類的物件還是會在此時初始化,不過,物件成員的值是隨機的,比如,指標型成員變數可能為null,也有可能不為null。 no如果使用者不提供建構函式,那麼編譯器就會自動合成一個預設建構函式 除非自定義一個私有...