2015-10-10 48 views
-2

被視爲朋友的對比,我需要你的理解問題的幫助。不能用哎呀

其中的這些都不能作爲朋友與空中接力被處理的對比:

  1. 功能
  2. 對象
  3. 操作功能

我想答案應該是操作員功能,但我不確定。請致電 任何人都向我解釋這一點。

在此先感謝。

+0

你在想錯。運算符函數在C++中始終處於友好狀態。另請注意,並非您在此標記的所有語言都支持該功能。 –

+0

@πάνταῥεῖOK!那麼應該怎樣正確回答? – SidJj

+0

請參閱下面的內容。 –

回答

2

對象。

一個對象被實例化,其他的不是。

想想「朋友」的含義。這就像模式一樣,你正在定義訪問權限,但它都是在編譯時完成的......一個對象是一個運行時間的事情,所以友誼是毫無意義的。一旦你的代碼被編譯了,它全部被簡化爲指針和引用,並且沒有檢查完成。另外,爲了進一步闡明,爲了在對象和其他對象之間,或在對象和其他任何對象之間創建友誼關係,在編譯/代碼時你不能這樣做,因爲你不知道對象將存在和你不能引用它們......無論如何,這樣的行爲或者類似的行爲可以通過語言來實現,但是友誼必須在運行時被添加,這將是高級語言的一個有趣特徵,但與我們所知道的友情有很大不同。

+0

你能解釋更多.. – SidJj

+0

想想什麼'朋友'的意思。這就像模式一樣,你正在定義訪問權限,但它都是在編譯時完成的......一個對象是一個運行時間的事情,所以友誼是毫無意義的。一旦你的代碼被編譯了,它全部被簡化爲指針和引用,並且沒有檢查完成。 – Michael

+0

另外,爲了進一步闡明,爲了在對象和其他對象之間,或者在對象和其他對象之間創建友誼關係,在編譯/代碼時你無法做到這一點,因爲你不知道哪些對象會存在, t引用它們......無論如何,這樣的行爲或類似的行爲可以通過語言來實現,但是友誼必須在運行時被添加,並且這將是高級語言的相當有趣的特徵,但是相當不同於我們所知道的友誼的特徵。 – Michael

1
  1. 你的問題,使只有有意義的C++。

  2. friend與OOP沒有差異。 friend通過允許你暴露更少的成員變量和成員函數幫助 OOP。 friend允許您將您的private成員公開給一個特定的外部組件。如果沒有friend,你將不得不讓成員public,並將他們暴露給全世界。

  3. 物件不能成爲朋友。 friend是一種控制成員訪問的機制,因此,就像publicprotectedprivate說明符一樣,編譯時間問題。對象,與此相反,存在的運行時[*]

  4. 「操作員功能」(正確的單詞是「重載運算符」)是沒有那麼多正常功能不同的,真的。大多數情況下,可以將重載操作符視爲具有有趣名稱的函數至於friend而言,沒有什麼區別,你是否打電話給你的功能Add+,例如。


[*]我意識到,這是當你考慮模板metapropgramming或constexpr輕微過於簡單化。