有没有办法将一个常量引用指定为不绑定临时对象的参数类型(函数的)? 也就是说,是否有一种标准的方式来指定引用是const
,但它只能绑定到非临时值,试图绑定到临时导致编译器错误¹?指定一个不会绑定临时对象的const int&`
例如,在一类X
的构造的情况下,
class X
{
public:
X(const int &value)
: mValue(value)
{}
private:
const int &mValue;
};
这将是一个很好的方法,以确保
class Y
{
public:
/* ... */
X* GetXForValue() const
{
return new X(mValue);
}
private:
int mValue;
};
编译,但与所谓的一个临时的,例如X x(100);
,它不?
¹)我可以重载函数int&&
并没有定义它,但会给出错误的想法,只会导致链接错误。
你可以'X(const int && value)= delete;'而不是定义导致链接器错误的函数 –
@PiotrSkotnicki我认为只有默认构造函数可以被标记为已删除? – MicroVirus
@MicroVirus *任何*功能都可以标记为已删除。 – Rakete1111