我终于知道我想问什么了,再发一帖求助
大家好,我的原帖http://topic.csdn.net/u/20120322/15/5f2e3383-cc76-418a-a83a-7c9910071e8c.html十分感谢大家的讨论。可是那个帖子里面我表述不清,有些人误会了我的意思。我现在终于组织好了语言,应该能把问题说清楚了,再加上原帖分数太少,特再发一帖。
一个类的私有成员,是否应该可以被同类对象改变?比如类
class A
{
private: int priValue;
public:
void doSomething(A &asAnotherobj)
{
this.priValue = 1;//这里,一个A的对象改变了自己的priValue,完全没有问题。
asAnotherobj.priValue = 2;//这里,一个A的对象,通过自己的行为改变了和自己同类的另外一个对象的private访问级别的priValue,这样做是否合理?
}
}
我知道在实际编程中,这样做是有道理的,比如拷贝构造,还有编译器的限制等。我想讨论的是,在面向对象理论上来看,是否应该允许这样的做法?(即不考虑现实,单纯的理论分析,谢谢。)
[解决办法]
类是个概念,类的实例化叫对象
假如类叫人,人是抽象概念,那张三,李四,王五就都是对象了,他们是实际存在的
假如存款是每个人的属性,你觉得 张三要是随随便便就能更改王五的存款数额,王五能干吗?
[解决办法]
所谓访问权限(如public,private),是对“类”来说的,不是对“对象”来说的,private访问权限是其它类不能访问,而非这个类的不同对象不能访问。 通过函数访问就保证了足够的安全性···
不过从面向对象的观点来看有点矛盾。各个对象应该都是一个独立的实体,按理说不应该通过一个对象去改变另一个对象的内容。估计这就是const&形参的目的了。仅代表自己的看法···希望大牛们能够给出NB的解释···
[解决办法]