作者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