【问题标题】:rules with temporary objects and args by reference通过引用使用临时对象和参数的规则
【发布时间】:2009-04-02 17:40:27
【问题描述】:

说我有课:

class A
{
 public:
 A() {}
};

还有一个功能:

void x(const A & s) {}

我愿意:

x(A());

有人可以向我解释有关通过引用传递临时对象的规则吗?就编译器允许的内容而言,您需要 const 的位置,是否发生隐式副本等。从玩弄,似乎您需要 const 是有道理的,但是是否有关于这一切的正式规则?

谢谢!

【问题讨论】:

    标签: c++ reference object temporary


    【解决方案1】:

    有一条正式规则 - C++ 标准(如果您有兴趣,请参见第 13.3.3.1.4 节)声明临时只能绑定到 const 引用 - 如果您尝试使用非 const 引用,编译器必须将此标记为错误。

    【讨论】:

    • 谢谢 - 我错过了 13.3... 上次我查找这个。
    【解决方案2】:

    Herb Sutter 在这里做了很好的解释:http://www.gotw.ca/gotw/081.htm

    【讨论】:

      【解决方案3】:

      x() 必须采用对临时 A 的 const 引用,或者 x() 必须采用 A 按值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多