首页 > 解决方案 > 将临时派生对象传递给基引用

问题描述

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


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

我注意到(我有带有日志信息的复制构造函数)只Base调用了复制构造函数。它是否正确,为什么?

标签: c++

解决方案


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

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

所以,结论是:不,这是不正确的。


推荐阅读