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

2021-05-14 08:16:17 字數 1336 閱讀 5807

1樓:匿名使用者

是這樣的。

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

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

這個就需要自己定義了。

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

2樓:兔子和小強

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

3樓:匿名使用者

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

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

4樓:開心果

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

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

5樓:

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

6樓:匿名使用者

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

c++類中的類成員變數怎麼呼叫帶引數的建構函式來初始化?

7樓:匿名使用者

要呼叫帶參的構造抄函式,必襲須這樣

做:#include "stdafx.h"

class a

;a(int a);

int ax;

};class b

b() : bx(0) //這樣也行du/*****************/

void print()

/*************************/a bx; //這樣宣告

/**************************/};int main(int argc, char* argv)

c裡建構函式怎麼寫,C 建構函式的引數是陣列的話要怎麼寫

public class myclass public myclass int age 這是一個帶引數的建構函式 private int age 建構函式的作用 簡單地說就是初始化一類的物件例項以及其各自段的值.c 建構函式是在建立給定型別的物件時執行的類方法。建構函式具有與類相同的名稱,它通常初始...

C 圓類,要求定義建構函式(以半徑為引數,預設值為0,周長和麵積在建構函式中生成)和複製建構函式

不會的。c 類的建構函式詳解 一 建構函式是幹什麼的 class counter private 資料成員 int m value 該類物件被建立時,編譯系統物件分配記憶體空間,並自動呼叫該建構函式 由建構函式完成成員的初始化工作 eg counter c1 編譯系統為物件c1的每個資料成員 m v...

c問題不包含採用引數的建構函式

public fruit string name 你寫了這個帶引數的建構函式,導致預設的不帶引數的建構函式public fruit 被覆蓋掉了,你只要把它給新增上就可以了 class fruit 你這裡只有一個public fruit string name 帶引數得構造方法 c 不包含採用0個引數...