推 hnaxiorll:感謝解答\( ̄▽ ̄)/ 06/06 20:24
※ 引述《hnaxiorll (fairyland)》之銘言:
: 我想問的是在class中明明變數a,b是宣告成private
: 但是在自己的class函式中宣告相同的型態,C卻能直接取出來用!?
: 這樣不會違反class中private的隱藏性嗎??
: 請大家幫忙解除我這個疑惑 謝謝各位 m( ̄︶ ̄)m
其實設計成這樣的理由很簡單
想像一下你要寫 copy assignment 的時候
Foo& Foo::operator=(const Foo& f)
{
// copy all members in Foo
...
}
如果你只能存取 this 底下的 private 成員,卻不能取得 f 的 private 成員
顯然你無法複製 f 的所有成員
因此你根本無法寫 copy assignment
除了 copy assignment 以外,其它的函式其實也會有類似的情況
因此讓成員函式存取其它同類別物件的 private 成員是必要的
而且成員函式也有責任讓所有同類別物件的內容保持正確而一致
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.151.2