c++ - 在通用代码中处理 getter 方法调用的结果
问题描述
当我编写泛型代码时,通常在编写非泛型代码时,我会像这样处理 getter 方法调用的结果:
const auto& result = obj.get();
这有一些优点,例如 ifget()
稍后会被更改并返回一些不可复制的对象,或者在通用代码中您无法提前说明get()
将返回的内容的性质时,result
不会强制进行任何复制。唯一的限制是,因为result
它绑定到get()
whenget()
按值返回的临时返回,所以它必须是const
,这在许多情况下无论如何都可以。
另一方面,我看到很多人担心什么const auto&
时候get()
返回一些原始类型,例如int
or size_t
,而不是仅仅写const auto result = obj.get();
,因为有人认为在使用引用时会在后台生成一些偷偷摸摸的、隐藏的和不必要的指针。
虽然确实没有优化会const auto& result = obj.get();
生成稍微多一点的二进制代码,但我没有看到任何证据表明当优化开启时它是正确的。
const auto& result = obj.get();
那么为所有用例编写真的有什么问题吗?是否有一些不可优化的情况下表现最差?
解决方案
推荐阅读
- cassandra - Cassandra 如何仅使用分区键检索行?
- javascript - 优化 Instagram 嵌入以在 DOM 事件后加载
- angular - 我是 Angular 5 的新手并收到此错误:未捕获错误:模板解析错误:'employee-list' 不是已知元素:
- xml - codecept 可以查看 RSS 提要 (XML) 中的元素吗?
- javascript - 在 Chrome 扩展程序中强制代理重新身份验证
- dialogflow-es - 链接权限意图
- python - ModuleNotFoundError 与 Django,无法识别应用程序的名称
- c++ - TensorFlow C++ “NOLINT(build/namespaces)”是什么意思?
- angular - 无法在 Angular 服务中为对象的属性赋值
- database - 以下哪些是经典封面