作者flarehunter (幻之焰影)
看板EE_DSnP
標題[問題] 關於private
時間Sun Oct 28 11:27:56 2007
class DoubleInt
{
private:
int data;
public:
add(DoubleInt dInt)
{
......;
}
};
我本來以為private裡面的data member 只有自己的函式才能讀取
所以在add 的函式裡
dInt的data應該不能直接讀到
但是試了一下 發現可以直接讀取 也可以更改
所以如果在main()裡面
打DoubleInt d1,d2;
d1.add(d2);
d2的data也有可能會不小心被更動
這該怎麼辦呢?
是不是要用什麼reference之類的??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.170.147
1F:推 ilway25:不太懂耶.. code ? 10/28 11:49
2F:推 ric2k1:That's why in my reference code, I use --- 10/28 14:47
3F:→ ric2k1:add(const DoubleInt& dInt); will be covered in lec#4. 10/28 14:47
4F:→ ric2k1:That means "a reference to a constant DoubleInt". 10/28 14:47
5F:→ reefuj:你的add(DoubleInt dInt)的dInt是一個新的DoubleInt型態的 10/28 14:51
6F:→ reefuj:變數, 和傳進去的d2不是同一個 10/28 14:53
7F:推 ric2k1:TA 說的對, dInt 是 d2 的一個 copy, 所以 d2 不會被改到 10/28 15:59
8F:→ ric2k1:只是 pass-by-object 可能會比較沒有效率而已. 10/28 16:00
9F:推 flarehunter:喔喔 我了解了 所以我只是想太多而已... 10/28 17:59