已采納回答 / 王大貓
fun2(&s2) ?是什么?作者沒這么用啊。fun1(&s1) 里面的&s1是傳入函數的實參,等于是把子類賦值這父類。下面的圖中打叉是因為他把父類對象P1賦值給了子類對象S1
2018-06-24
已采納回答 / C_can
is a”代表的是類之間的繼承關系,“has a”代表的是對象和它的成員的從屬關系。c++還有另一種實現has-a關系的途徑----私有繼承。使用私有繼承,基類的公有成員和保護成員都將成為派生類的私有成員。這意味著基類方法將不會成為派生對象公有接口的一部分,但可以在派生類的成員函數中使用它們。使用公有繼承,基類的公有方法將成為派生類的公有方法。簡而言之,派生類將繼承基類的接口,這是is-a關系的一部分。使用私有繼承,基類的公有方法將成為派生類的私有方法。簡而言之,派生類不能繼承基類的接口。正如從被包含對象...
2017-10-16
已采納回答 / 慕尼黑2258629
你說的沒錯,私有繼承中,在子類中可以訪問父類的保護成員。B類由A類私有派生,那么在B類中可以訪問A類的public、protected,但是不能訪問A類的private。在B類外,B類對象不能訪問A類的成員,只能訪問B類的public。C類由B類私有派生,那么C類中不能訪問B類的private(其中包含了A類的public、protected),但是可以訪問B類的public、protected。在C類外,C類對象只能訪問C類的public。
2017-08-12
已采納回答 / TTshuanger
S.m_strName = "Jim"; 這句話有問題,protected繼承后,string m_strName就由public變為protected,所以直接訪問就會出錯
2017-06-29
已采納回答 / 慕蓋茨4278089
protecd對于類外部來說就相當于private,在soldier類里面的成員函數可以訪問play(),但在類的外部就不行,就好像在主程序中不能直接訪問soldier里面的成員變量m_iAge(m_iAge也是protected)
2017-04-30