论十大关系读后感1000:一个对象的赋值问题!

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 23:31:43
////////////////////////
同类型的对象之间可进行赋值,当一个对象赋值给另一对象时,所有的数据成员都会逐位拷贝。举例如下: #include<iostream.h>
class myclass{
int a,b;
public: void set(int i, int j) {a=i,b=j;}
void show() {cout<<a<<“ ”<<b<<endl;}
};
main()
{ myclass o1,o2;
o1.set(20,5);
o2=o1;
}
有的书上说 当 执行o2=o1; 实际执行的是o2.a=o1.a;o2.b=o1.b;
虽然不会执行拷贝构造函数
但数据成员 a,b是私有成员,怎么可以对一个私有成员赋值呢?
哪位大虾helpme?
orz!

首先你要搞清楚了,私有当然也可以赋值的,问题是由谁来赋值.
就像你上面的程序一样,
int a,b;
public: void set(int i, int j) {a=i,b=j;}
在执行set(i,j)函数时,系统是不是把i,j的值赋给了a,b.它们也是私有的呀?
你要搞清楚,私有的只是不能由外部对像来操作,因为它对外部隐藏了.
但是当执行两个同类对像赋值时,系统是非常清楚这个类的内部情况的,
也就是它可以对内部私有变量直接进行操作,这不同于面向程序员的操作

一句话:私有还是公有只是设定来提高人写程序的效率 计算机执行时不存在这一概念