1樓:匿名使用者
a::a(int i):a(i),r(a) {}
上面這句話的意思是說:定義建構函式a(int i),初始化類中的成員變數a=i;r=a;
2樓:匿名使用者
這段**寫的很好呀?有什麼問題嗎?
c++ class a {private int x ;public a(int i =0):x(0) {} a(int i =0):x(i)
3樓:慕容瑩華汪菲
a a(1);輸出1,這個沒什麼解釋的,主要是看為什麼b b(2,3);會輸出203。
b(int i,int j):a(i)這一句用i初始化基類a,輸出2;
b的資料成員a沒有顯式初始化,用預設的a(int i=0)初始化a,輸出0;
cout<
using namespace std;
class a
};class b: public a
};int main()
4樓:匿名使用者
a a(1)輸出1
b b(2,3)執行b的建構函式
第一步執行public b(int i ,int j):a(i)中的a(i)(先執行父類的建構函式)輸出2
再生成b的成員變數private: a a;輸出0再執行cout<
5樓:匿名使用者
怎麼可以有兩個引數一樣的建構函式a(int),會報錯的吧
c++ 若定義類a:class a { public: a(); a(int x); … };
6樓:匿名使用者
a a(4) //這一定義,呼叫類a的賦值建構函式a(int x) 一次
a b[3] //相當於定義了型別為a物件的陣列回,其元素個數答為3,即呼叫三次類a的預設建構函式a()
a *p[2] //定義了乙個型別為a*的陣列,即指向a類物件的指標陣列,並未產生類a的物件,不呼叫建構函式
滿意請採納。
7樓:匿名使用者
a a(4) 呼叫有參建構函式1次;
a b[3] 建立a陣列,呼叫無參構造3次;
a *p[2] 不會呼叫建構函式。
一共呼叫建構函式4次。
8樓:灰灰不吃羊
4次是對的,建立a的時候還呼叫了一次預設的建構函式,儘管什麼都不做,但是初始化工作是必須完成的。然後呼叫三次方法,會自動執行三次建構函式。
9樓:匿名使用者
p是指標陣列,並沒有賦值為實體,故呼叫0次,b陣列含三個類,每個類呼叫一次,a為乙個類,只呼叫一次,所以總共3+1=4次
c++物件導向程式設計第五章第5題求解
10樓:匿名使用者
(1)b1.i 正確因為i是a類的公有成員,可以繼承到子類b
b1.j b1.k 錯誤。因為j為保護成員,k為私有成員,雖然被繼承了,但不能夠訪問,正如a1.j,a1.k也是錯誤的。這樣呼叫只能呼叫公有成員
(2)都可以,在b類裡面,a類非私有成員都可以給b的成員函式使用,因為都被繼承了過來
(3)跟第二個類似,非私有的都可以使用。因此i,j可以使用。
(4)c1.i是對的,其他都是錯的
(5)公有就可以了。f2不行
(6)非私有的都可以,因此全部都行
樓主問的問題,其實掌握兩條定理就好了。
(1)類裡面能呼叫該類或基類的非私有成員變數或成員函式。
(2)類外物件能呼叫該類或基類的公有成員變數或成員函式。
C 類成員的定義
定義私有可以使資料得到有效的保護,同時亦不會對該類以外的其餘內容帶來影響,程式模組之間的相互作用 耦合性 被降到最小。全部public當然可以 只是有的時候類裡有一些只有自己用得著的變數,也public的話,呼叫類的時候就得花不少時間精力去慢慢找你要呼叫的成員了,如果一些成員在類執行時不應該被改變的...
C 運算子過載中過載為類的成員函式和過載為類的友元函式
友元函式 bai 具有與du類成員函式相同訪問zhi權利的 非dao成員函式 他可以訪問類專的私有和保護成員屬 通過該類物件 物件指標或其引用。簡單且一般的說 運算子過載為類的成員函式,他的引數個數會比 該運算子的操作符 少一,而運算子過載為友元函式時,他的引數與其操作個數是相同的。友員函式是指來在...
c 語言中類中的靜態資料成員為什麼必須在類體外初始化
可以通過以下幾個例子更形象的說明這個問題 test.cpp include class a int main 編譯以上 會出現 對 a a 未定義的引用 錯誤。這是因為靜態成員變數a未定義,也就是還沒有分配記憶體,顯然是不可以訪問的。再看如下例子 test.cpp include class a i...