一個類如何使用另一個類的private、protected方法

 

一個類A使用另一個類Bprivate/protected函數f(),常見的方法有幾種:

1)  複製Bf()的內容到A中。

最常見的也是代碼複用最低的方法。

2)  BA的成員變量(或在A的某函數中生成B),然後調用Bf()

這時要提升f()的訪問權限爲public,訪問權限有時卻是改不了的。

如果BA的成員變量,則A變爲有狀態的類,在一些情況下是不行的(如A爲多線程下單例)

3)  A私有繼承B

A已經繼承自某個類(一般情況下會這樣),則可能會出現菱形繼承的問題,需要用虛擬繼承來解決,但是可能無法改成虛擬繼承。

4)  提煉f(),新建一個基類C,讓AB都集成自C

感覺是比較學術的方法,對於複雜的類來說可能會很麻煩。

 

發佈了105 篇原創文章 · 獲贊 5 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章