有沒有辦法將一個常量引用指定爲不綁定臨時對象的參數類型(函數的)? 也就是說,是否有一種標準的方式來指定引用是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