0
我認爲賺錢重載的構造explicit
防止拷貝初始化,如果我這樣做需要它explicit
我怎樣才能使拷貝初始化爲下面的類如何啓用顯式重載構造函數的複製初始化?
class real {
public:
explicit real(const double& value) : x(value) {}
real(const real& other) : x(other.x) {}
~real() = default;
real& operator= (const double& rhs) {
this->x = rhs;
return *this;
}
operator double() {
return this->x;
}
private:
double x;
};
int main(){
real r1 = 3.4; // Error
real r2 = (real) 3.4; // Ok : is this the only way ?
return 0;
}
你的意思是我通過調用創建臨時對象,而不是鑄造拷貝構造函數...這是很好的方式不知道我是怎麼錯過了這個......但我認爲我可以做直接分配(複製初始化)而不需要創建臨時對象。 – Laith
對。無論如何,我認爲不會對優化編譯器產生不利的性能影響。 –