C 第五節 過載操作符

2021-07-04 05:37:45 字數 3035 閱讀 9098

過載操作符

1、操作符過載

1.1 讓同樣的操作符執行不同的操作,使用操作符操作非預設型別的運算元

1.2 const  a & operator  =  (const  a  &   x)

2、深拷貝

2.1 避免自賦值(if(this != &x))  

--  釋放掉指標成員已經指向的記憶體空間,避免記憶體洩漏 

--  為指標成員開闢新堆記憶體空間  

--  向新記憶體空間拷貝內容  

--  返回*this,即返回新物件本身

a、引入深拷貝與過載賦值運算子

boy.h

#ifndef __c__no730class__boy__

#define __c__no730class__boy__

#include using namespace std;

#define n 12

class boy

;#endif /* defined(__c__no730class__boy__) */

boy.cpp

#include "boy.h"

boy::boy(char * n, char * g, int p):phone(p)

boy::~boy()

cout << "析構boy" else

strcpy(name, newname);

}void boy::changetel(char *newtel)

void boy::print()

b、實現深拷貝與過載賦值運算子

vector.h

#ifndef __c__no730class__vector__

#define __c__no730class__vector__

#include using namespace std;

class vector

;#endif /* defined(__c__no730class__vector__) */

vector.cpp

#include "vector.h"

vector::vector(int s, int an_array)

vector::~vector()

}const vector & vector::operator = (const vector & x)

return *this;

}void vector::print()

bool vector::operator == (const vector &x)

return yesorno;

}

main.cpp

#include "vector.h"

int main()

; int array2[5] = ;

vector v1 (3, array1);

vector v2 (5, array2);

v1.print();

v2.print();

v1 = v2;

v1.print();

v2.print();

bool c = (v1 == v2);

cout << c girlbaby.h

#ifndef __c__no730class__girlbaby__

#define __c__no730class__girlbaby__

#include using namespace std;

class girlbaby

;#endif /* defined(__c__no730class__girlbaby__) */

girlbaby.cpp

#include "girlbaby.h"

girlbaby::girlbaby(char *n, double h)

girlbaby::~girlbaby()

cout << "析構girlbaby" << endl;

}const girlbaby & girlbaby::operator = (const girlbaby & x) //過載賦值運算子

return *this;

}void girlbaby::print()

girlbaby::girlbaby(const girlbaby &x) //拷貝建構函式

d、練習,簡單復合類過載賦值運算子

toy.h

#ifndef __c__no730class__toy__

#define __c__no730class__toy__

#include using namespace std;

class toy

;#endif /* defined(__c__no730class__toy__) */

toy.cpp

#include "toy.h"

toy::toy(int n)

void toy::sett(int n)

int toy::getnumber()

void toy::print()

toy::~toy()

baby.h

#ifndef __c__no730class__baby__

#define __c__no730class__baby__

#include #include "toy.h"

class baby

;#endif /* defined(__c__no730class__baby__) */

baby.cpp

#include "baby.h"

baby::baby(char *m, int a, int n)

第五節 操作符詳解

5位運動員參加了10公尺臺跳水比賽,有人讓他們 比賽結果 a選手說 b第二,我第三 b選手說 我第二,e第四 c選手說 我第一,d第二 d選手說 c最後,我第三 e選手說 我第四,a第一 比賽結束後,每位選手都說對了一半,請程式設計確定比賽的名次。日本某地發生了一件 案,警察通過排查確定殺人 必為4...

第五節 檔案操作

read讀取檔案全部內容,預設就是讀模式,所以不需要指定模式 f open test2.py encoding utf8 data f.read print data f.close redline讀取檔案的一行內容,列印的時候加上end 否則會有空格 f open test2.py encodin...

第五節swift 自增,自減操作符

像c語言一樣,swift也提供了自增操作符 和自減操作符 方便快速的給當前變數值加1或減1。你可以在整型或浮點型上面使用這些操作符。每次呼叫 i的時候,i的值都會加1.本質上,i 就是 i i 1的簡寫。同樣的,i是 i i 1的簡寫。符號 和 即可以用作前序,也可以用作後序操作符。i和 i 都可以...