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裡的,那麼它的資料成員也在...