这个右值签名模式有意义吗?
Does this rvalue signature pattern make sense?
假设我通常需要对象的副本,即使我得到了引用。假设这些签名都在一个类范围内,这样就可以看到它们。这样做的优点和缺点是什么,而不是只有一个push(const RingType&aData)。如果我的对象(RingType)只有基本类型,或者是一个基本类型,那么模式可能不会给我带来任何东西,但在这种情况下它会损害性能吗?我觉得这种模式很好,因为如果我得到一个引用,我复制它,并把它作为一个右值转发,如果我得到一个右值,它就会进入右值签名。想法吗?我在这里关注的是性能。
void push(const RingType& aData) {
push(RingType(aData));
}
void push(RingType&& aData) {
//process aData
}
这不是很有用:
- 如果不需要副本,通过引用 传递
- 如果你需要一个副本,传递值
在后一种情况下,复制构造函数或移动构造函数将根据它们的可用性被调用,以获得最佳性能。
相关文章:
- 在C++中,使用带有 std::optional 参数的函数<T>来表示可选参数是否有意义?
- API 返回智能指针的 std::optional 以明确指定指针可能为 null 是否有意义?
- 从头开始为应用程序创建 docker 映像是否有意义?
- 在c++中,如果首先禁止默认构造,那么禁止复制构造有意义吗
- sizeof(函数)有意义吗?
- 二进制模式 + 格式化文本操作或文本模式 + 二进制数据操作 - 有意义吗?
- 插入向量时,使用lambda的返回而不是函数的返回是否有意义?
- 在 C++17 中使用 const std::string& 参数有意义吗?
- 基础类模板参数的有意义名称
- 内联这个函数,确实有意义
- 将 final 关键字添加到没有基类(未派生)的类中的虚函数是否有意义
- 左移负整数为零是否有意义?
- 是否有一个上下文表达式`a.b :: c`有意义
- 是否有一些有意义的统计数据来证明保持有符号整数算术溢出未定义是合理的
- 将可选与reference_wrapper相结合是否有意义?
- 函数返回rvalue参考是否有意义
- 将 [[noreturn]] 添加到主函数是否有意义
- 在树视图中使用复合模式是否有意义
- 如何从任何可调用的函数中获得有意义的函数签名
- 这个右值签名模式有意义吗?