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

2021-05-14 09:58:42 字數 2067 閱讀 5356

1樓:周生

看你的成員變數型別和繼承方式了,公有成員變數和公有繼承,直接賦值就行了。私有成員變數,繼承之後要在初始化列表中初始化

初始化表的必要性

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;};

2樓:

不一定在有引數建構函式初始化,不一定要在列表中初始化。

希望能幫到你,**不清楚再問。

例如:#include

using namespace std;

class a

};int main()

3樓:楊星光

1建構函式可以沒有引數

2如果沒有引數,那麼在建構函式中如資料成員直接賦值

如:class student;}

4樓:匿名使用者

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

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

5樓:匿名使用者

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

做:#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++中如果定義了帶引數的建構函式,那麼在定義物件時,必須初始化嗎?

6樓:匿名使用者

是這樣的。

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

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

這個就需要自己定義了。

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

7樓:兔子和小強

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

8樓:匿名使用者

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

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

9樓:開心果

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

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

10樓:

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

11樓:匿名使用者

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

怎樣在C定義類中定義訪問資料成員的成員函式

一般都是這樣做的啊,成員變數定義成private,提供對外的public函式,要訪問內部的成員變數的話,必須通過這種成員函式,get,set 資料成員和bai成員函式是乙個類的du兩個基本的屬性。成員函zhi數可dao以呼叫資料成員,資料成專員按照不同要求設為屬private public和prot...

如何在c中宣告指向物件的成員函式的函式指標

並不存在指向 物件成員的函式指標。指向物件成員的指標稱為成員指標,回和函式指標並不等價,答也就是不能當作函式指標使用。struct a void goo void a p p就是乙個a類物件中沒有引數返回void的成員函式的成員指標 int main 對於必須使用函式指標的情況,可能需要獲得靜態成員...

C中,類的私有成員變數放在什麼段中,是在堆疊段中嗎

你說bai的應該是對 象的成員變數du 如 begar 不懂zhi程式設計的程式設計師 所說,物件dao的成版員變數就放權在物件內 如果物件本身是堆疊 ss 裡的,那麼它的 非靜態 資料成員也在堆疊裡如果物件本身是堆裡的,那麼它的 非靜態 資料成員也在堆裡如果物件本身是ds裡的,那麼它的資料成員也在...