永发信息网

以下C++代码为何调用了3次析构函数而不是2次?析构函数调用次数不是和构造函数调用次数一样吗?

答案:4  悬赏:80  手机版
解决时间 2021-01-30 16:52
#include
using namespace std;
class B
{
public:
B(){cout<<"构造函数B"< B(int i):data(i){cout<<"构造函数B"< B play(B b){return b;}
~B(){cout<<"析构函数B"<private:
int data;
};
void main()
{
B temp;
temp.play(5);
}
最佳答案
B temp;上的代码创建了一个B,相应的有一个析构调用。
temp.play(5);这里传递参数时,由于play接受一个B对象,所以会创建一个B。

B play(B b){return b;}由于play函数返回一个B,所以相应的会创建一个b的拷贝。
全部回答

谁说没有执行! 把析构函数改成下面这句,你就会方法它执行了,你析构函数没有定义操作,怎么会知道执行没有呢?

~stock(){cout << "~stock" << endl;}

1)B temp;一次 2) B(5):两次,调用带参构造函数 3)return b;三次,调用拷贝构造函数。由于没有显示的定义拷贝构造函数,将调用默认拷贝构造函数。
一个temp对象和两个临时对象(一个是成员函数play的参数,另一个是成员函数play的返回值),所以最终要调用三次析构函数。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
美康月子公馆地址在什么地方,我要处理点事
万都商务楼停车场地址有知道的么?有点事想过
呼的意思是什么啊?知道的请说下!
为什么我吃饭以后胃会很难受,感觉有东西顶住
请问这个时候我可以提出遗产分割诉讼吗?
x-1=y+1/2=z-2/3,求x2+y2+z2的最小值
一点到底怎么去啊,我要去那办事
凯德广场-屋顶停车场地址好找么,我有些事要
通书的意思是什么啊?知道的请说下!
过点M(1,2)的直线l与圆C:(x-3)2+(y-4
陕西经济管理职业技术学院,王牌专业是哪个专
听别人说日本蛇能爬到日本人家里去那日本蛇是
我的vivo x3s 屏幕上方以前有一个双指下拉的
魔方KTV怎么去啊,我要去那办事
我在体检半月前吃过好多头孢克洛。谷丙转氨酶
推荐资讯
酷派cool1 dual和乐视2手机哪个好,有什么区
现在中国最具影响力的农产品网站是哪个?哪个
停车场(金龙佳园南)地址在哪,我要去那里办事
坌并的意思是什么啊?知道的请说下!
新款捷达车尾部是什么字母
去中国农业银行办银联卡需要存钱吗
质数、奇数、偶数、合数、分别是什么意思?
城关信用合作社西街储蓄所地址在哪,我要去那
卡通农场黑屏卡住了全黑什么提示也没有就是进
临沂到青岛下道怎么走
怎样才能练习好副键盘上的数字键???
分子晶体与原子与晶体离子晶体熔点的界限题目
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?