将临时派生对象传递给基本引用

时间:2018-09-20 09:29:38

标签: c++

class B {};
class D : public B{};


f(B& x);
f(D());

我注意到(我有带日志信息的副本构造函数)只有Base副本构造函数被调用。这是正确的,为什么?

1 个答案:

答案 0 :(得分:0)

非常量左值引用不能绑定到右值,因此示例程序片段的格式不正确。

如果我们将示例固定为使用const左值引用,则任何一个类实例都不会涉及任何副本。

因此,结论是:不,这是不正确的。