C中,假設類A有帶引數建構函式B,建立例項時需要

2021-03-03 21:00:16 字數 1142 閱讀 8173

1樓:匿名使用者

不能 類中bai可以沒有建構函式,構du造函式的作用只

zhi是對dao

類的資料成員初始化(引數專列表)和賦值屬作用,而不是與能不能例項乙個物件相關,如果沒有建構函式,定義個物件,記憶體照樣會給這個物件分配空間,只不過沒有被初始化和賦值。 對於你沒有顯示的定義建構函式那麼編譯器只會在以下4種情況合成個預設建構函式:1.

類中含有虛函式。2.該類是由虛基類派生而來的。

3.該類的父類含有顯示定義的預設建構函式。4.

含有的資料成員是個物件並且該物件含有顯示定義的預設建構函式。

c++中為什麼基類中只有帶引數的建構函式時,派生類中一定要顯示定義建構函式,並寫出基類的建構函式及引數

2樓:匿名使用者

因為建立派

抄生類物件時要呼叫基類的bai建構函式,當基類du沒有定義構函式時就調

zhi用預設dao無引數的建構函式。當只定義了有參的建構函式時就呼叫有參的建構函式,所以當派生類沒有給基類傳遞引數時就會出現錯誤。解決方法:

可以在基類中過載乙個無參建構函式,或者給有參建構函式的引數設定預設值。

3樓:匿名使用者

當你定義乙個派生類抄的物件時首

襲先呼叫的是基類的

建構函式,如基類的建構函式是帶參的 在派生類建構函式的後面會有基類的建構函式的傳參 否則就會報錯 指的是呼叫基類中你定義的這個建構函式而不是預設的無參建構函式

c++中有多個建構函式的類,在使用預設建構函式的例項建立後,再呼叫類方法時出錯。

4樓:匿名使用者

這個問題bai是函式預設值的問du題造成的。

a (int w=15) 其實相當於

zhi兩dao個宣告 即使用預設值的回a()和不使答用預設值的a(int)。

你用的編譯器版本比較老了吧,第乙個會直接提示乙個錯誤而不是警告,很明顯的這個也是函式過載時常見的錯誤之一。記住有預設值的函式簽名包括數個(預設值個數+1)不同的呼叫簽名,如果有衝突,就會造成編譯時錯誤:編譯器無法確定到底使用哪個來進行呼叫。

第二個錯誤是因為第乙個無法確定呼叫哪乙個而產生的後續錯誤。

又手賤點了個匿名......我是farmist

關於C類中帶函式的問題,關於C類中帶函式模板的問題。。

include using namespace std class student class manage int main 大概按照上面的來寫就可以了 大致明白你的意思了。你是想用c 的stl標準的algorithm演算法來排序對吧?如果是這樣,你得自己寫乙個iterator類的東西來處理你的資...

在c 中物件成員必須在含有引數的建構函式中初始化,並且在初始化成員列表中?這句話有問題吧

看你的成員變數型別和繼承方式了,公有成員變數和公有繼承,直接賦值就行了。私有成員變數,繼承之後要在初始化列表中初始化 初始化表的必要性 1 類中包含常量和引用型的成員變數。必須通過建構函式和初始化表顯式地對其進行初始化。2 在子類中顯式地構造其基類部分。class a a int n m n n p...

誰幫我編c程式,要類中顯示定義建構函式和析構函式。簡

樓上的程式好多錯誤!建構函式和複製建構函式之間是過載關係。include using namespace std class person person person char name,int age m age age 有構造函式引數初始化表 person person const person...