为了账号安全,请及时绑定邮箱和手机立即绑定

为什么拷贝构造函数调用时不打印Student?

int main(void)

{

Student stu1;

Student stu2=stu1;

Student stu3(stu1);

return 0;

}

正在回答

2 回答

有道理,可能你的重点是你认为它调用了构造函数

三、浅拷贝与深拷贝
    1. 默认拷贝构造函数
   很多时候在我们都不知道拷贝构造函数的情况下,传递对象给函数参数或者函数返回对象都能很好的进行,这是因为编译器会给我们自动产生一个拷贝构造函数,这就是“默认拷贝构造函数”,这个构造函数很简单,仅仅使用“老对象”的数据成员的值对“新对象”的数据成员一一进行赋值,它一般具有以下形式:

Rect::Rect(const Rect& r)
{
    width=r.width;
    height=r.height;
}
这涉及到了浅拷贝和深拷贝。我也是百度的,我自己的理解就是像上次回答一样,这个函数就只会初始化列表,没有调用
构造函数里面的语句代码。


2 回复 有任何疑惑可以回复我~
#1

慕运维9949243 提问者

非常感谢!
2018-08-05 回复 有任何疑惑可以回复我~

因为啊 打印student那句代码是写在构造函数里面的,如果你没有自己定义拷贝构造函数,系统就会自动生成拷贝函数,这个函数就只会初始化列表。里面是没有cout那句代码的,所以只会打印一个student。

0 回复 有任何疑惑可以回复我~
#1

慕运维9949243 提问者

但拷贝构造函数实例化时调用了构造函数啊
2018-08-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103381    人
  • 解答问题       732    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

为什么拷贝构造函数调用时不打印Student?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号