class CStudent
{
int sno;
public:
CStudent(int sno):sno(sno) {cout<<"\nCScon1:" ;}
CStudent():sno(0){cout<<"\nCScon2:";}
CStudent(CStudent& stu){ cout<<"\nCScon3:";sno=stu.sno+1;}
void display(){cout<<"\ndisp1:"<<sno;}
void display(CStudent s){cout<<"\ndisp2:"<<s.sno;}//传参的时候 s=stu1 发生拷贝构造(浅拷贝)
~CStudent(){}
};
void testCStu(){
cout<<"\nfun:testCStu"<<endl;
CStudent stu1(1);// stu1.sno = 1
stu1.display(stu1);//stu1传给了临时对象即形参s, 同时调用了构造函数CScon3,s.sno=sut1.sno+1=2
stu1.display();//但stu1 的原值没有变化
cout<<"\n--";
CStudent stu2=stu1;//建立新对象时调用了拷贝构造
stu2.display();
stu2=stu1;//并么有拷贝构造?不奇怪,并没有建立新的对象,不再调用构造函数,包括拷贝,只能赋值
stu2.display();
}
2020-06-11【拷贝构造的一个例子】注释
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...