C 運算子過載實現陣列相加

2021-10-01 09:08:09 字數 3792 閱讀 9637

第一種方式,物件屬性是指標

#include

"iostream"

#include

"iomanip"

#include

"string.h"

#include

"cmath"

#include

"algorithm"

//演算法標頭檔案

using namespace std;

//利用物件對陣列相加

class group

group

(int

* p,

int len)

void

tostring()

cout<

}//陣列相加

group operator+

(group &q)

// return q;

// cout<

//例項化物件,否則就呼叫無參構造方法,p指向null了

int a[5]

=;t.p = a;

//這裡又定義了乙個陣列,賦值給t的指標屬性,避免了原陣列值被覆蓋問題

t.len = len;

for(

int i=

0; i

)return t;}}

;int

main()

,b[5]=

; group g1

(a,5),

g2(b,5)

,g; g1.

tostring()

; g2.

tostring()

;// g=g1.operator+(g2);

g = g1+g2;

g.tostring()

; cout<

g1.tostring()

; g2.

tostring()

;return0;

}

第二種方式,物件屬性是陣列

#include

"iostream"

#include

"iomanip"

#include

"string.h"

#include

"cmath"

#include

"algorithm"

//演算法標頭檔案

using namespace std;

//利用物件對陣列相加

class group

}group

(int

* p)

}void

tostring()

cout<

}//陣列相加

group operator+

(group &q)

return t;}}

;int

main()

,b[5]=

; group g1

(a),

g2(b)

,g; g1.

tostring()

; g2.

tostring()

;// g=g1.operator+(g2);

g = g1+g2;

g.tostring()

; cout<

g1.tostring()

; g2.

tostring()

;return0;

}

友元函式實現

#include

"iostream"

#include

"iomanip"

#include

"string.h"

#include

"cmath"

#include

"algorithm"

//演算法標頭檔案

using namespace std;

//利用物件對陣列相加

class group

group

(int

* p,

int len)

void

tostring()

cout<

}//陣列相加

//友元函式實現

friend group operator+

(group &p, group &q);}

; group operator+

(group &q1, group &q2)

; t.p = a;

t.len = q1.len;

for(

int i=

0; i

)return t;

}int

main()

,b[5]=

; group g1

(a,5),

g2(b,5)

,g; g1.

tostring()

; g2.

tostring()

;// g=g1.operator+(g2);

g = g1+g2;

g.tostring()

; g1.

tostring()

; g2.

tostring()

;return0;

}

在構造方法裡new新開闢空間

但要主要要在析構函式裡delete掉

#include

"iostream"

#include

"iomanip"

#include

"string.h"

#include

"cmath"

#include

"algorithm"

//演算法標頭檔案

using namespace std;

//利用物件對陣列相加

class group

group

(int

* p,

int len)}~

group()

void

tostring()

cout<

}//陣列相加

group operator+

(group &q)

;//定義陣列

group t

(a,this->len)

;// 有參構造,new新開闢了記憶體空間,儲存陣列資料,這樣就不會出現因為釋放記憶體而沒值的情況了

c 運算子過載實現陣列案例

includeusing namespace std class array 建構函式 array array int m length 拷貝建構函式 array array const array obj 析構函式 array array 求陣列的長度 int array length 過載操作符...

C 運算子過載的實現

1.怎麼實現運算子過載 1.1 過載的實質 把運算子當作函式去實現另一種功能 1.2 具體實現 函式返回值 operator 運算子 引數 operator 運算子當作函式 2.運算子的分類 2.1 友元過載 友元函式的形式過載 引數個數等於運算元 2.2 類過載 類的成員函式過載 引數個數 運算元...

C 運算子過載 過載特殊運算子

賦值運算子用於同類物件間的相互賦值。賦值運算子只能被過載為類的非靜態成員函式,不能過載為友元函式和普通函式。對於使用者自定義的類而言,如果沒有過載賦值運算子,那麼c 編譯器會為該類提供乙個預設的過載賦值運算子成員函式。預設賦值運算子的工作方式是按位對拷,將等到右邊物件的非靜態成員拷貝給等號左邊的物件...