栈中对象,如果是按值返回,会调用一次复制构造函数和一次析构函数,但堆中对象怎么没执行析构函数呢?

[复制链接]
查看11 | 回复1 | 2012-8-26 00:24:11 | 显示全部楼层 |阅读模式
A&func(A & s)返回的是一个引用,你传进函数的是一个引用,函数直接在传入的对象上更改,然后返回了这个对象的引用,因此,相当于没有任何复制开销。Afunc(A & s)效率低些,会在更改传入的引用后返回一个复制的临时变量。你这样使用:func(*m);还不如不返回。写成void func(A & s)。delete会调用析构函数。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行