加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c编译器是否会通过`reference`优化未使用的返回值?

发布时间:2020-12-16 05:21:34 所属栏目:百科 来源:网络整理
导读:在有人跳过之前,在配置文件进行优化之前,这只是一个好奇的问题,源于 this original question. 如果我通过引用返回相同的对象,那么如果不使用它会被优化掉?例如,我有一个Vector具有各种数学功能(假设我不使用操作符重载).两种写法: inline void Vector::Add
在有人跳过之前,在配置文件进行优化之前,这只是一个好奇的问题,源于 this original question.

如果我通过引用返回相同的对象,那么如果不使用它会被优化掉?例如,我有一个Vector<>具有各种数学功能(假设我不使用操作符重载).两种写法:

inline void Vector::Add(const Vector& in) // Adds incoming vector to this vector

要么

inline Vector& Vector::Add(const Vector& in) // Adds incoming vector to this vector and returns a reference to this vector

现在如果在不使用返回值的情况下使用Add(),编译器会简单地丢弃返回值,并且函数就像没有返回值一样开始吗?如果没有内联怎么办?

解决方法

引用作为参数或返回语句通常以类似于指针的方式实现,并且成本最小(在大多数情况下可忽略).根据调用约定,它可以是寄存器中的单个存储.

关于是否可以优化返回值,除非编译器正在编写代码否,否则不能.当编译器处理函数时,它不知道调用代码是否使用return语句,这反过来意味着它必须总是返回一些东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读