運算子過載 例項研究 Array類

2021-10-23 06:25:09 字數 2489 閱讀 8825

說明:在本例中,建立了乙個功能強大的陣列類array,它能夠進行範圍檢查,從而確保陣列下標保持在有效範圍內。這個類允許通過賦值運算子把乙個陣列物件賦值給另乙個陣列物件。

#ifndef array_h_included

#define array_h_included

#include

using

namespace std;

class

array

int&

operator

(int);

intoperator

(int

)const

;private

:int size;

int*ptr;

//指向整型陣列的指標};

#endif

// array_h_included

#include

using

namespace std;

#include

using std::setw;

#include

using std::exit;

#include

"array.h"

array::

array

(int arraysize )

//如 array a1(5);

array::

array

(const array &arraytocopy )

//拷貝建構函式,如array a2(a1);用已有的a1物件初始化a2物件。

:size

(arraytocopy.size)

//成員初始化器初始化a2的size;

array::

~array()

//如果不提供析構函式,系統也能使用預設的析構函式**陣列物件,但對於new開闢的空間不能被**。

int array::

getsize()

const

const array &array::

operator=(

const array &right)

//賦值運算子的過載,如a1 = a2;

for(

int i =

0;i < size;i++

) ptr[i]

= right.ptr[i]

;//把a2的元素依次賦值給a1;

}return

*this

;//返回被a2賦值後的a1;

/*此時使用者抓住了a1的使用權,但開頭有const限制,所以避免了(a1 = a2) = a3的操作。*/

}bool array::

operator==(

const array &right)

const

//判斷兩陣列是不是一樣運算子的過載;

return

false

;return

true;}

int&array::

operator

(int subscript)

//取陣列元素運算子的過載,如a[2]

return ptr[subscript]

;//否則直接返回ptr陣列對應德下標。

}int array::

operator

(int subscript )

const

//const版本返回的沒有引用,

return ptr[subscript]

;//否則直接返回ptr陣列對應德下標。

}//const物件呼叫const函式,即 const物件不能被修改,如a[3] = 10錯誤。

istream &

operator

>>

(istream &input,array &a)

//輸入運算子過載;

return input;

}ostream &

operator

<<

(ostream &output,

const array &a)

//輸出運算子的過載 ;

if(i %4!=

0)output << endl;

return output;

}

#include

using

namespace std;

#include

"array.h"

intmain()

執行結果展示:

運算子類過載

類過載格式 函式型別 operator 運算子名稱 形參表 型引數 使用引數 1 使用 號實現複數相加 不使用類過載 include using namespace std class complex complex double r,double i complex complex add com...

運算子過載 類的賦值運算子過載

下面介紹類的賦值運算子 1.c 中物件的記憶體分配方式 在c 中,物件的例項在編譯的時候,就需要為其分配記憶體大小,因此,系統都是在stack上為其分配記憶體的。這一點和c 完全不同!千 萬記住 在c 中,所有類都是reference type,要建立類的實體,必須通過new在heap上為其分配空間...

C 運算子過載例項

以下示例中定義了乙個class test,過載了 等符號 include include using namespace std class test test const int a v a test const test t1 v t1.v 以下過載小於號 比較兩個物件的大小 bool oper...