C++11 通用引用和接口之间的关系 我正在阅读scott meyers关于第27项中的有效现代C++的书,下面是TEX/P>

C++11 通用引用和接口之间的关系 我正在阅读scott meyers关于第27项中的有效现代C++的书,下面是TEX/P>,c++11,C++11,在使用通用参考参数时,在复杂系统中通用 引用在之前通过多层函数调用转发 最终到达一个确定参数 类型是可接受的。通用参考的次数越多 转发错误消息时,mor可能会在 出了问题。许多开发人员发现,这一问题本身就是解决问题的理由 为接口保留通用参考参数,其中 性能是最重要的问题 林克的一些背景 我下面是上面课文中的问题 作者所说的“为接口保留通用参考参数”是什么意思 C中的通用引用和接口之间有什么关系吗++ 你似乎把普通英语理解为专业术语。这句话是这样的: 许多开发人员发现,这个问题本身就是为性能最重

在使用通用参考参数时,在复杂系统中通用 引用在之前通过多层函数调用转发 最终到达一个确定参数 类型是可接受的。通用参考的次数越多 转发错误消息时,mor可能会在 出了问题。许多开发人员发现,这一问题本身就是解决问题的理由 为接口保留通用参考参数,其中 性能是最重要的问题

林克的一些背景

我下面是上面课文中的问题

  • 作者所说的“为接口保留通用参考参数”是什么意思

  • C中的通用引用和接口之间有什么关系吗++


  • 你似乎把普通英语理解为专业术语。这句话是这样的:

    许多开发人员发现,这个问题本身就是为性能最重要的接口保留通用参考参数的理由

    “通用引用”(现在称为“转发引用”)是一个技术术语,但其他词在其正常的英语意思中使用。这句话可以用以下更简单的词来表达:

    许多开发人员发现,由于这个问题,如果函数的性能至关重要,他们只在函数的参数中使用通用引用

    要回答您的确切问题:

  • 由于潜在的隐藏错误消息,开发人员决定只对某些接口使用通用引用。换句话说,它们为这些接口保留它们

  • “接口”一词被用作“访问某物的点”。一个函数、一个类或类似的东西。在面向对象的意义上,它不是一个
    接口
    。C++甚至没有这样的概念:“<代码>接口<代码> >

  • 在AFAIU中,他的意思是“避免过度广泛地使用通用引用,主要在(公共)API或大型体系结构组件之间的接口中使用它们”
  • 一方面,使用通用引用是有效的(可能时移动对象,否则复制对象),另一方面,允许您摆脱多个重载方法。由于这些原因,通用参考在API设计中非常有用
  • 当设计一个既不是接口也不是API的一部分的类时,作为程序员,您可以选择使用通用引用

    template <typename T>
    void Foo(T&&);
    
    第一种选择更加简洁。第二种方法在出现编译错误时生成更清晰的消息


    您还可以选择不使用某些重载。但这可能是一个效率较低(就性能而言)的解决方案。

    不要忘记,通用引用也捕获了
    volatile
    void Foo(Foo&&);
    void Foo(const Foo&)
    void Foo(Bar&&);
    void Foo(const Bar&);
    // overloads with volatile are less commonly used, but possible