1. C++語言問題
1. Java用接口代替C++中多繼承,有什么優(yōu)勢?
- 避免像C++那樣出現(xiàn)多繼承而導(dǎo)致的關(guān)系混亂。
C++多重繼承的優(yōu)缺點
一些事物往往會擁有兩個或兩個以上事物的屬性,為了解決這個問題,C++引入了多重繼承的概念。
- 多重繼承的優(yōu)點是對象可以調(diào)用多個基類中的接口。
- 多重繼承的缺點是容易出現(xiàn)繼承向上的二義性。
參考: http://blog.sina.com.cn/s/blog_5396eb530100mtc9.html
2. 覆蓋與重載,重載返回值類型可以改變嗎?
覆蓋是發(fā)生在子類和基類之間的方法的重寫,是類與類之間多態(tài)的一種表現(xiàn)的形式。
重載發(fā)生在類內(nèi),屬于類內(nèi)多態(tài),指一個類可以擁有多個同名的函數(shù),但是函數(shù)參數(shù)要求不一樣。C++編譯器在處理重載函數(shù)時是根據(jù)函數(shù)(作用域+函數(shù)名+參數(shù)列表參數(shù)類型)來重新生成新的函數(shù)名。
參考:https://www.cnblogs.com/liubo1/p/5925746.html
https://blog.csdn.net/chary8088/article/details/7255010
https://blog.csdn.net/gogogo_sky/article/details/72807123 (這個不錯)
3. explicit什么作用?什么是隱式類型轉(zhuǎn)換?
explicit用于構(gòu)造函數(shù),抑制隱式轉(zhuǎn)換的發(fā)生。
顯式轉(zhuǎn)換也叫強制轉(zhuǎn)換,是自己主動讓這個類型轉(zhuǎn)換成別的類型。
隱式轉(zhuǎn)換是編譯器自動轉(zhuǎn)換的。
effective c++中說:被聲明為explicit的構(gòu)造函數(shù)通常比其non-explicit兄弟更受歡迎。因為它們禁止編譯器執(zhí)行非預(yù)期(往往也不被期望)的類型 轉(zhuǎn)換。除非我有一個好理由允許構(gòu)造函數(shù)被用于隱式類型轉(zhuǎn)換,否則我會把它聲明為explicit。我鼓勵你遵循相同的政策。
參考:https://www.cnblogs.com/pityhero233/p/8146585.html
https://www.cnblogs.com/liushui-sky/p/6281630.html
https://www.cnblogs.com/joinclear/p/3850076.html