已采納回答 / qq_慕九州0111630
每個類(含有虛函數(shù)的類)系統(tǒng)只會分配一張函數(shù)表,繼承后的子類也是一個新的類,系統(tǒng)也會生成一份函數(shù)表的
2020-03-20
已采納回答 / weixin_慕村4306521
circle的類定義內(nèi),構(gòu)造函數(shù)內(nèi)coordinate *m_p=new coordinate(3,5);與數(shù)據(jù)成員中coordinate *m_p;矛盾,不妨改為如下,這樣隨著對象的解構(gòu),自動進(jìn)行coordinate的析構(gòu)函數(shù)class circle:public shape{public:circle(double r):m_p(3,5){m_r=r;cout<<"circle"<<endl;}virtual ~circle(){cout<<"~circle"<...
2020-02-28
已采納回答 / 我入戲太深
因為throw拋出來的東西就是一個string類型的“除數(shù)不能為0"這個字符串。你的第一種寫法catch(string),只要是拋出來的字符串都能夠捕獲到,但是你在打印的時候你只能通過【cout<<"除數(shù)不能為0"<<endl;】打印出來, 因為你沒有一個指針來接受你字符串內(nèi)容。而用catch(string &e),捕獲的時候e會指向“除數(shù)不能為0”這個字符串的地址,因此在打印的時候只需要【cout<<e<<endl】;就可以把“除數(shù)不能為0”這句話...
2020-02-25
已采納回答 / 慕勒1355447
對象的大小是指在類實例化出的對象當(dāng)中,他的數(shù)據(jù)成員所占據(jù)的內(nèi)存大小,而不包括成員函數(shù),所以不占用
2020-01-17
已采納回答 / 小程序魔王
主要是可以優(yōu)化代碼,比如函數(shù)的參數(shù)類型可以寫成父類Person,這樣你傳一個Farmer或Worker,函數(shù)都可以運行,但是如果你要是把函數(shù)的參數(shù)類型寫成Farmer,那Worker就是類型不匹配,你還要再寫一個參數(shù)類型為Worker的函數(shù),也就是說你得寫兩個具有相同功能的函數(shù),但是如果你把參數(shù)類型寫成父類,那只需要寫一個函數(shù)就可以了
2019-05-29
已采納回答 / no4990
就算改成private都可以,這個老師用的指針p不是Circle類的指針,而是int指針,所以不受訪問限定符的限定。你可以用下面的代碼來看,p1是Circle類的指針,p2是int指針。<...code...>
2019-05-07
已采納回答 / 慕圣1012934
不加是新在函數(shù)內(nèi)新創(chuàng)建了一個臨時變量,接收了throw傳過來的值(1.1),如果加了&,就會把1.1的引用傳過來,之后a就相當(dāng)于1.1的別名,就不用重新創(chuàng)建臨時變量,因為a就是throw那里的1.1,可以節(jié)省一些系統(tǒng)資源。
2019-03-10
已采納回答 / DeceiverY
一個類同時被兩個或以上的類繼承時,在實例化子類的同時,會造成父類的多次定義即父類被重復(fù)定義;而宏定義就是為了解決類的重復(fù)定義,當(dāng)實例化子類時,對父類的定義會通過宏定義做出判斷,如果沒有定義就可以直接定義,如果已經(jīng)定義,就會跳過。
2019-03-05
已采納回答 / DeceiverY
父類Car ,子類Bus,,,通過Car *p = new Bus;實例化對象后,其中的p為Car類型的指針,而*p則為Bus類型的對象,用p->所指向的就是子類的數(shù)據(jù)成員或者成員函數(shù),而用p->Car::才為父類的
2019-03-05