在c 中建立了類,但在建立新物件時,編譯顯示 不存在預設建構函式

時間 2021-09-04 03:23:50

1樓:

建立物件時,用的是無參的建構函式,但是程式中沒有,需要定義乙個無參的建構函式,或者是使用有參的建構函式建立物件。

2樓:匿名使用者

很明顯你的建構函式有個引數,可是你構造物件時沒有引數,他去找那個沒有引數的建構函式,發現找不到

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

3樓:匿名使用者

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

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

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

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

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

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

c++中如果定義了帶引數的建構函式,那麼在定義物件時,必須初始化嗎?

4樓:匿名使用者

是這樣的。

你定義了建構函式,系統就不會用預設的建構函式了。

**中你定義了自己的帶參建構函式,所以系統的預設建構函式就在編譯時,不會生成了。

這個就需要自己定義了。

否則的話,date a;這樣使用的時候就會報錯。

5樓:兔子和小強

定義物件的時候它會呼叫相應的建構函式初始化自己。如果沒有引數就呼叫不帶引數的建構函式。

6樓:匿名使用者

如果乙個類定義中沒有建構函式,那麼編譯器會自動給這個類新增乙個空參的建構函式,函式體是什麼也不做。如果你給乙個類實現了建構函式,它們編譯器就不再會這個類自動新增空參的建構函式了。這時候,如果你沒有提供空參構造,這意味著這個類將不允許空參構造。

這也就是你在編譯時遇到的現象。如果你希望使用空參構造和帶參構造兩種構造方式並存,你就需要分別實現兩個建構函式,或者實現乙個帶預設引數的含參構造。

7樓:開心果

當你自己定義乙個建構函式的時候,編譯器就不再生成預設建構函式了,除非你自己顯式的定義,所以你如果定義了有引數的建構函式,然後卻想無引數初始化,編譯器會報錯的

簡單來說,你要麼不寫建構函式,用成員函式賦值,要麼就把有引數無引數的建構函式都顯式的定義清楚,

8樓:

這個例子中有兩個建構函式,分別是含參和不含參的。那麼在定義物件的時候不初始化也不會報錯吧。

9樓:匿名使用者

你的問題解決了,不過大家的回答還是有點問題的,都說不定義建構函式,編譯器會自動生成乙個無引數的建構函式,其實這個是不對的,只是在有些情況下才會生成。具體大家可以上網找找資料看下。http:

C中怎麼給自己建立的類的物件賦值

public class nihao public class nihao1 public class en 比如建立乙個類為user 如user us null 給us物件賦值乙個null值 也可以user us getuserbyid id 但是getuserbyid方法返回值應該是user型別...

(C如何建立n個類的物件

fly勇敢的心 迴圈,每次new 1個,迴圈 n 次,或者new一個陣列,下標為n class pc new class 10 建立一個陣列每個成員都是class型別,共10個成員。引用時候這樣 pc 0 pc 1 c 是在c語言的基礎上開發的一種面向宇宙程式語言,應用廣泛。c 支援多種程式設計正規...

java中建立物件 類名 物件名new 類名後面的

怕怕叫什麼好呢 你朋友說的很對 類的構造方法是與類同名的 所以 類名 就是表示 構造方法 我是不推薦前者的表示方法 這樣沒有突出這是個方法 方法自然是需要 的 括號裡是引數 沒有就不填 但是不能省略. 歐尼醬死 類名 物件名 new 構造方法 構造方法 構造方法名 引數 構造方法名的值 類名的值 我...