過載 運算子

2021-08-22 12:08:51 字數 1514 閱讀 1593

(1)首先要承認運算子過載實質就是函式呼叫。

(2)承認operator 就是函式名。

(3)將引數列表補齊,比如a[ i ], 那麼i 就是引數;==> operator(int i);

(4)  根據情況填寫返回值。這一點需要強調(在下面的例子中注釋部分也有體現)。需要強調的是:

運算子過載函式體其實可以有 三種返回值的 寫法,分別為:

1.   void array :: operator(int i) 

返回void, 那麼cout << a1[i] <<" ";  這句**將無法實現,所以這種寫法pass。

2.   int array :: operator(int i) 

返回整形的乙個數值,那麼cout << a1[i] <<" ";這句話就可以正常實現了,但是例子中還有這樣一句**,

a1[i] = i; 也就是說在給陣列元素賦值時,[ ] 過載函式的返回值作為左值被賦值為 i。那麼 int array :: operator(int i)

返回乙個整型數值,相當於常量給常量賦值,所以會出現左值無效的錯誤,而第三種返回值寫法正好克服了這一點。

3.  int & array :: operator(int i) 

返回引用,這樣就可以實現賦值操作了,這就是需要強調的點,函式返回值當左值需要返回乙個引用。

// array.h

#pragma once

#include "iostream"

using namespace std;

class array

;

// array.cpp

#include "array.h"

array :: array(int length)

m_length = length;

m_space = new int[m_length];

}array :: ~array()

}array::array(array const &obj)

}int array::length()

int array :: getarray(int index)

void array :: setarray(int index, int value)

//int &array :: operator(int i)

// testarray.cpp

#include "iostream"

using namespace std;

#include "array.h"

void main()

for (i = 0; i < a1.length(); i++)

cout << endl;

array a2 = a1;

for (i = 0; i < a2.length(); i++)

cout << endl;

system("pause");

}

過載運算子

題目描述 定義乙個矩形類,資料成員包括左下角和右上角座標,定義的成員函式包括必要的建構函式 輸入座標的函式,實現矩形加法,以及計算並輸出矩形面積的函式。要求使用提示中給出的測試函式並不得改動。兩個矩形相加的規則是 決定矩形的對應座標分別相加,如 左下角 1,2 右上角 3,4 的矩形,與 左下角 2...

過載運算子

include include using namespace std class test test const int a v a test const test t1 v t1.v 以下過載小於號 比較兩個物件的大小 bool operator const test t1 const 比較物件...

過載運算子

1.當乙個過載的運算子是成員函式時,this繫結到左側運算物件。成員運算子函式的引數比運算物件的數量少乙個。非成員函式呼叫等價於 data1 data2 普通表示式 operator data1,data2 等價的函式呼叫成員函式呼叫等價於 data1 data2 普通表示式 data1.opera...