c++拷贝构造函数何时调用?

我对C++中的类了解的不够深入,遇到了关于类的拷贝构造函数的问题。请教一下。按照教程,我写了一个student类头文件,含私有数据成员*name,*num,age。成员函... 我对C++中的类了解的不够深入,遇到了关于类的拷贝构造函数的问题。请教一下。
按照教程,我写了一个student类头文件,含私有数据成员*name,*num,age。成员函数包括构造函数,拷贝构造函数、析构函数等。
然后在cpp文件中包含一个使用类的拷贝构造函数的函数,并在main()函数中调用他。
问题:在定义时直接调用函数和先定义后调用,区别在什么地方?希望讲的透彻些。
展开
 我来答
千锋教育
2015-10-14 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):
1) 一个对象作为函数参数,以值传递的方式传入函数体;
2) 一个对象作为函数返回值,以值传递的方式从函数返回;
3) 一个对象用于给另外一个对象进行初始化(常称为赋值初始化);

--在定义时直接调用函数和先定义后调用,区别在什么地方,没区别,硬要讲的话,就是编译器在给s1复制的时候调用了类似s2复制的方式。
zhl_xina2000
推荐于2017-10-02 · TA获得超过267个赞
知道小有建树答主
回答量:656
采纳率:0%
帮助的人:470万
展开全部
在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):
1) 一个对象作为函数参数,以值传递的方式传入函数体;
2) 一个对象作为函数返回值,以值传递的方式从函数返回;
3) 一个对象用于给另外一个对象进行初始化(常称为赋值初始化);

--在定义时直接调用函数和先定义后调用,区别在什么地方?
没区别,硬要讲的话,就是编译器在给s1复制的时候调用了类似s2复制的方式。
追问
恩,这个层面我还是能理解的,就是不知道针对上面两张图的情况,定义时初始化和先定义后初始化为什么会造成不同的结果呢?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-12-02
展开全部
第一张应该是s2调用默认的构造函数 第二张是s2得到的是changeage()返回的值 没有调用构造函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式