已采納回答 / 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
最新回答 / 大力出奇跡丶
個人認為,當你使用test1時,調用了一次person的默認拷貝函數去實例了一個臨時的person,所以在運行結果中只有一次構造函數。但是,運行結束之后同樣也是要把這個臨時的person給析構掉的,所以運行了兩次person的析構函數,(~person是運行了析構函數的意思)
2017-06-18