2015-04-02 60 views
-1

一個白癡的問題的位,但這個突然殺出進入我的腦海:爲什麼點運算符(。)可以與私有類成員/方法一起使用?

爲什麼可能點操作與對象(內成員/友元函數)的私有成員被利用?我承認我已經使用了一段時間了,但我從來沒有想過它。但考慮到它用於公共成員功能,似乎有點奇怪。

任何人都可以提供一些見解?

例如(編輯:我正在學習有關運算符重載類):

rational rational::operator/(const rational &obj2) const 
{ 
    rational value; 
    value.num = (*this).num * obj2.denom; 
    value.denom = (*this).denom * obj2.num; 
    return value; 
} 

謝謝大家誰已經回答! :)

+2

爲什麼需要有不同的操作員? – user2357112 2015-04-02 20:27:29

+0

在課堂上學習重載操作符。 – Charybdis 2015-04-02 20:28:34

+0

你的'operator /'如何訪問'obj2'的成員? – Brian 2015-04-02 20:32:06

回答

0

.爲一般(方法或變量)成員訪問,而不管能見度。這只是一種語言設計選擇。通常,人們試圖避免添加比所需更多的語法,並且「a.b意味着我們正在訪問a的成員b」是一個不錯的和簡單的規則 - 這比要學習例如「a.b用於訪問公共方法,a#b用於訪問私有方法,[email protected]用於訪問公共字段,...」。

但請注意,使用.從類自己的代碼之外訪問私有成員是一個編譯錯誤(除非您是從一個聲明爲類的朋友或者聲明爲成員班)。語言的大部分語法都有規定可以在哪些語境中使用該語法的規則。

+0

朋友也可以訪問私人會員。 – Brian 2015-04-02 20:45:10

+0

@Brian:真的;我已經更新了我的答案。 – 2015-04-02 21:12:26

相關問題