為什麼只有 C++ 存在友元函式?
作者:由 小吼 發表于 歷史時間:2018-03-13
C++的friend就是java的預設訪問性,C#的internal,只是功能比C++弱了點
因為 C++ 又沒有 C# 的 internal,又沒有 Java 的 package-private,也沒有 Jigsaw,更沒有 Scala 的細粒度訪問控制,所以才用友元實現類似的功能
因為“友元”是 C++ 專有的概念,所以……
其他的語言換了種概念。
友元提供的功能是:給予一個外部的類訪問自身類的所有成員的許可權。
這是不是相當於Java 的包和預設成員許可權兩個概念的結合體?
因為C++欠缺包的概念,於是沒法提供包內級別的訪問控制,於是只能採用friend這種放棄治療的補丁。
ans,在Java中,如果在同一包內,實際上已經實現友元了
比如這個,private long value,但value依然被。的方式訪問了
雖然按照學習C++的基礎課程,友元產生的歷史原因是為了“相容C語言的使用習慣”
現在看來,實際功能是為C++匱乏的程式碼管理和訪問控制提供便利