关于构造函数!
class Sample
{
int x;
public:
Sample(){};
Sample(int a){x=a;}
Sample(Sample &a){x=a.x++ +10;}
void disp(){cout<<"x="<<x<<endl;}
};
为什么a是一个对象能够使用它的私有成员呢?
class Sample
{
int x;
public:
Sample(){};
Sample(int a){x=a;}
Sample(Sample &a){x=a.x++ +10;}
void disp(){cout<<"x="<<x<<endl;}
};
为什么a是一个对象能够使用它的私有成员呢?
Sample(Sample &a){x=a.x++ +10;} 像这样参数是自己的构造函数叫做拷贝构造函数。看下面句子:
Sample s1;
Sample s2=s1;//这条赋值语句把s1赋给s2,等同与把s1的内存空间拷一份作为s2的内存空间,当然s1,s2里面的数据(包括私有)都相等。
以上是默认的情况,想一想拷贝是不是相当于直接赋值?如果自己写拷贝构造函数覆盖默认的,则可以改写数据,不管是共有还是私有。