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

在有人跳过之前,在配置文件进行优化之前,这只是一个好奇的问题,源于 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语句,这反过来意味着它必须总是返回一些东西.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...