问题描述
我有一个带有构造函数的类,该类将另一个结构作为参数,并且具有默认值。像这样:
class A
{
public:
A(someStruct st = someStruct::defaultStruct());
};
我在我的代码上运行了一个静态分析器,它说这个参数应该是 const ref。但它有点参考临时文件,虽然我正在将它复制到构造函数中,但我仍然很困惑我是否应该使用 const ref。
someStruct::defaultStruct() 类似于
static someStruct someStruct::defaultStruct()
{
return { 0,0 };
}
解决方法
Analyzer 说它必须是 const&
,因为 someStruct::defaultStruct()
返回一个临时值。你需要这样的代码:
A(const someStruct& st = someStruct::defaultStruct());
因为只有 const&
可以绑定到临时作为参数的默认值。