C++关于构造函数和析构函数调用次数的问题

已知类C定义了缺省构造函数、拷贝构造函数、析构函数,并重载了赋值运算符和流输出运算符。现有如下代码段:CtestFunc(Cc){cout<<c;returnc;}int... 已知类C定义了缺省构造函数、拷贝构造函数、析构函数,并重载了赋值运算符和流输出运算符。现有如下代码段:
C testFunc(C c) {cout<<c; return c; }
int main()
{ C c1, c2 = testFunc(c1); return 0; }
则在该代码段的main函数执行期间,共调用了类C的拷贝构造函数和析构函数分别多少次?D

A.0和2
B.1和2
C.2和2

D.2和3
展开
 我来答
百度网友b191f26bc
推荐于2018-04-21 · TA获得超过187个赞
知道答主
回答量:173
采纳率:100%
帮助的人:136万
展开全部
没问题啊。
参数传递的时候第一次拷贝构造调用,
在函数返回的时候赋值给c2 再次调用了拷贝构造。
析构的话:c1 c2 c 三次
追问
不是返回了一个C的对象吗,这里不是引用,不用调用一次拷贝函数吗
追答
我跟踪查看了汇编代码执行情况。
第一次拷贝构造是在参数传递的时候。
第二次拷贝构造是在返回的时候。
对C2进行赋值,其实是将函数中临时创建的那个对象给了C2,没进行拷贝构造
xiaobomo
2014-06-25 · TA获得超过522个赞
知道小有建树答主
回答量:533
采纳率:100%
帮助的人:359万
展开全部
传递参数和返回参数各一次拷贝构造函数,所以是2次;
有两个对象c1 c2,外加函数返回的一个临时对象,所以共3个对象,故析构函数3次;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式