【发布时间】:2021-07-13 14:31:09
【问题描述】:
我有一个带有构造函数的类,该构造函数将另一个结构作为参数,并且具有默认值。像这样的:
class A
{
public:
A(someStruct st = someStruct::defaultStruct());
};
我在我的代码上运行了一个静态分析器,它说这个参数应该是 const ref。但它有点 ref 到一个临时的,虽然我将它的副本作为构造函数,但我仍然很困惑我是否应该这样做 const ref。
someStruct::defaultStruct() 类似于
static someStruct someStruct::defaultStruct()
{
return { 0, 0 };
}
【问题讨论】:
-
取决于
someStruct。 (大小,简单的复制/析构函数)? -
@Jarod42 someStruct 没有对应的构造函数和 d-tor,它的字段很少,包括其他带有简单构造函数的模板结构,也没有 d-tor 和其他
-
你的问题是什么?
-
相关:pass-by-value-or-const-reference。默认参数无关紧要。
-
@eerorika 我担心在这种情况下引用临时文件。虽然它不会超出范围,稍后在我的 c-tor 中我会复制它,但它是否可能有缺点,或者它可能只是一种糟糕的糟糕风格,比如使用 goto,例如。跨度>
标签: c++ c++11 reference static default-value