[英]How do I return another object with operator overloading?
我有一個包含數組數據的 class。 我需要編寫一個重載運算符,返回 class 的 object 並添加兩個 class ZA3CBC3F9D0CE2F2C15C9ZE1D6 例如:容器 x({1,2,3}) + y({1,2,3})。
我嘗試了以下操作並在數字上有效,但它沒有返回新的 object。 我還包括了構造函數。
構造函數:
Container(){
length = 0;
data = nullptr;
}
Container(int len){
length = len;
data = new double[length];
}
Container(std::initializer_list<double> il): Container(il.size())
{
std::copy(il.begin(), il.end(), data);
}
嘗試超載:
Container& operator+(const Container& other)
{
for (auto i=0; i<other.length; i++){
data[i] = data[i] + other.data[i];
}
return *this;
我可以得到反饋嗎?
如何在運算符重載的情況下返回另一個 object?
與從任何 function 返回 object 的方式相同:
Container operator...
// ^ Return an object; not a reference
{
Container c ... // create an object
// initialise with the desired values
return c;
}
您實現的內容會修改this
,然后返回對它的引用。 那是一個帶有誤導性名稱的operator+=
。 如果您希望您的代碼創建另一個實例並返回您需要的 go 一些步驟並閱讀參考等基礎知識。
幸運的是,一旦有了operator+=
和復制構造函數,使用它來實現operator+
就很簡單了:
Container operator+(const Container& other) {
Container result{*this};
result += other;
return result;
}
有關運算符重載的更多信息,請參見此處:運算符重載的基本規則和習慣用法是什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.