3 回答
TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
B(1);
B(2);
B(3);
B(4);
B(5);
這是五個(gè)不同的實(shí)例,所以只是通過(guò)cout<<x<<endl;打印了一下
b1沒(méi)有初始化,所以vector里面沒(méi)有值,outc不會(huì)輸出任何東西。
如果你希望b1.outc能打印出12345,那就意味著不同的實(shí)例要共享數(shù)據(jù),可以通過(guò)把vector聲明問(wèn)static實(shí)現(xiàn)。
TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
1 現(xiàn)在代碼本來(lái)就是能夠正常輸出?。?br/>2 是不是你的預(yù)期是想在 b1.outc()的時(shí)候輸出“1 2 3 4 5 ”??
如果是這樣:
把vector<int> a; 修改為: static vector<int> a;
并且在類A后增加一句: vector<int> A::a ;
這樣能能在b1.outc()的時(shí)候輸出: 1 2 3 4 5
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
我試了一下,
void outc() { for(int i = 0; i < a.size(); i++) cout << a[i] <<'\t'; } int main(){ B a(1); a.outc(); B b(2); b.outc(); B c(3); c.outc(); B d(4); B e(5); B b1;} 這樣的輸出是:1 2 3 百度居然不給貼圖。。。。看出來(lái)沒(méi),這就是繼承的特點(diǎn)會(huì)為每一個(gè)繼承類創(chuàng)建新的數(shù)據(jù)存儲(chǔ)空間,也就是說(shuō)一個(gè)B的對(duì)象有一個(gè)vector<int> a,而b1對(duì)象沒(méi)有push數(shù)據(jù),所有就沒(méi)有輸出?。。?/code> |
- 3 回答
- 0 關(guān)注
- 182 瀏覽
添加回答
舉報(bào)
