class Человек
{
private:
int кошелёк;
public:
void Человек() { кошелёк=3; }
void gч( Человек& ч )
{
ч.кошелёк--; // сейчас работает. а не должно ;)
}
};
class Человек
{
private:
int кошелёк;
public:
void Человек() { кошелёк=3; }
void gч( Человек& ч )
{
ч.кошелёк--; // Работает и должно работать!
}
void gcч( const Человек& ч )
{
ч.кошелёк--; // Не работает, как и должно.
}
};
class Человек
{
private:int кошелёк;
public:
void Человек() { кошелёк=3; } void gч( Человек& ч )
{
ч.кошелёк--; // сейчас работает. а не должно ;)
}
};
我自己也能为目前的情况找到一个理由:在描述各种二元操作(甚至在同一层次结构中)时,同一类的实例之间的 "所有权 "的严格分离会导致语法的杂乱。然而,在继承的情况下,"直接访问 "当然应该被裁减。
因为这样做没有任何意义......;)
1.放在私人部分的情况下,不会有任何改变。
在继承的情况下,它将会,这很清楚。
2.需要的东西很少...只有在获得自己的副本的情况下才有理由。
3.所以让它决定。 正确。;)
4.这就是整个问题: 到底什么才 算 "正确操作"。
1.如果你真的想隐藏你的钱包,你为什么要做gch()?
2.而在复制实例时,是否有?
1.如果你真的想隐藏你的钱包,你为什么要做gh()函数?
2、什么时候可以复制实例?
阅读我之前的文章。所有的答案都在那里。
从前,把自己阶层的其他对象(实例)"默认 "为朋友是一项 "政治决定"--纯粹是为了节省布卡夫。 而现在你把这种例外 当作生活的常态,想不受阻碍地爬进所有远亲的私人口袋。
嗯...。
1.放在私人部分的情况下,不会有任何改变。
在继承的情况下,它将会,这很清楚。
2.需要的东西很少...只有在访问自己的副本的情况下才有理由。
3.所以让它决定。 正确。;)
4.这就是整个问题: 究竟什么 才算是 "正确的工作"。
好吧,那么告诉我。如何在一个类中定义这样一个字段,使它只能由 "主 "实例的方法来修改,而不能由其他人来修改。
如果这是不可能的,那么封装山雀 的主题可能还没有在语言中涉及,不是吗?
好吧,那么告诉我。如何在一个类中定义这样一个字段,使它只能由 "主 "实例的方法来修改,而不能由其他人来修改。
如果这是不可能的,那么封装山雀 的主题可能还没有在语言中涉及,不是吗?
这一特点令人不快,令人惊讶。如果你的编译器允许你改变别人的实例的私有字段,这显然是胡说八道。它应该被张贴到servicedesk。
我不明白:你为什么要如此限制自己?
你认为这将自动使你的方案更安全吗?
它不会的!恰恰相反。
这是不必要的限制,有一天会让你这样写。