下面順序表中的建構函式為什麼是這個樣子的,應該怎麼理解?C 問題。只有50分,全部給了,謝謝幫忙

2021-07-04 17:50:38 字數 1447 閱讀 5427

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樓:匿名使用者

可以無參建構函式初始化,不一定要在成員列表中,這只是其中的一種方式

在JAVA中,什麼是過載的建構函式

建構函式的過載 舉個例子 public student public student string name public student string name,string age 上面三個函式都是student類的建構函式。第一個是無參的,第二個有一個引數,第三個有兩個引數。這就是建構函式的過...

c中的建構函式前加上eplicit有什麼用

c 提供了關鍵字explicit,可以阻止不應該允許的經過轉換建構函式進行的隱式轉換的發生。宣告為explicit的建構函式不能在隱式轉換中使用。c 中,一個引數的建構函式,承擔了兩個角色。1 是個構造器 2 是個預設且隱含的型別轉換操作符。所以,有時候在我們寫下如 aaa 這樣的 且恰好 的型別正...

c 中什麼是建構函式,能舉個通俗易懂的例子嗎?謝謝

建構函式是用來初始化類成員的。函式和類的名字一樣,沒有返回值。class a private int a public a 無參建構函式 預設建構函式 a int ra a ra 有引數建構函式,初始化a 比如人是一個類 你要建立人這一物件 human jack name,age and so on...