关于C++构造函数、拷贝函数、析构函数调用问题,问题与答案详情见图 请教这个程序是怎么运行的
2个回答
2017-01-05
展开全部
注意,以下是解释为什么会调用两次拷贝构造函数
1.运行foofun函数时,由于它的参数是对象
当t1对象传入形参时,会先会产生一个临时变量,就叫 A吧。
然后调用拷贝构造函数把t1的值给A。
2.由于foofun函数是 对象以值传递的方式从函数返回
执行到return时,
先会产生一个临时变量,就B吧。
然后调用拷贝构造函数把t1的值给B,
因为foofun函数调用setvalue函数,所以第二次拷贝构造函数value变成了20
欢迎采纳
1.运行foofun函数时,由于它的参数是对象
当t1对象传入形参时,会先会产生一个临时变量,就叫 A吧。
然后调用拷贝构造函数把t1的值给A。
2.由于foofun函数是 对象以值传递的方式从函数返回
执行到return时,
先会产生一个临时变量,就B吧。
然后调用拷贝构造函数把t1的值给B,
因为foofun函数调用setvalue函数,所以第二次拷贝构造函数value变成了20
欢迎采纳
追问
是我还想问一下,在setValue中t1不是被赋值为20了么,为什么最后的析构函数输出是10
追答
foofun函数调用结束了,这个foofun函数结束了,你懂我的意思吗?比如,
int a;
f(){a=5;}
cout<<a;此时输出什么呢。
2017-01-05
展开全部
在VC里面,单步执行,就看到是如何执行的
~~~~~
~~~~~
追问
运行了,但是不知道它为什么会调用
就是好像突然就跳到了调用的语句中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询