運算子過載

2022-05-15 22:50:43 字數 1775 閱讀 9222

在c++中運算子過載通過兩種方式:1.友元函式的方式 2.成員函式的方式

五種運算子不可以過載 點運算子. 網域名稱解析符:: 點星運算子.* 三目運算子:? 求大小運算子sizeof

不能使用成員過載的運算子》  <<

不能通過友元的方式過載的運算子 賦值運算子= 括號運算子()下標運算子 箭頭運算子->

雙目運算子推薦使用友元 單目運算子 推薦使用成員

友元函式是單項傳遞的 a是b的友元類 在b中不申明 ,b不是a的友元類 a是b的友元類 b是c的友元類 a不一定是c的友元類 需要在c中申明

友元方法和成員方法的區別是 友元方法不能使用this呼叫成員變數而成員方法可以呼叫this

1

#pragma once

2 #include3

using

namespace

std;

4classa5

2526 a& operator++()

30 a operator++(int)//

區分於前++ 裡面放乙個引數表示後++

3136

//過載輸出輸入運算子

37 friend ostream& operator

<<(ostream& os,const a& a)//

引用a防止被修改加上const

3842 friend istream& operator>>(istream& is, a& a)//

不加const表可以修改a的值,a的值為鍵盤輸入的值

4347

int& operator*() //

過載解引用運算子

4851

int& operator(int index) //

過載下標運算子

5255

56operator

bool() //

強轉bool型別 沒有返回值型別

5760 friend a operator*(const a& a, const a& b)//

使用友元方法對乘法運算子過載

6166 };

標頭檔案中通過類a申明需要使用的過載運算子

1 #include "

a.h"23

4 a::a(int

data)

58 a::a(const a&other)912

1314 a::~a()

1517

int a::getdata() //

get方法

1821

22void a::setdata(int data)//

set方法

2326

int adda(const a& a, const a&b)

2730

31 a operator+(const a& a, const a& b)//

使用友元方法對加法運算子過載

3237 a a::operator-(const a&b)//

利用成員方法 對運輸符進行過載

38

在a.cpp檔案中在類外定義需要使用到的函式以及過載運算子

1 #include2 #include"

a.h"

3 #include//

存放字串

4int

main()

543 cin.get

();44

return0;

45 }

運算子過載之過載型別運算子

普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...

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

有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...

運算子過載

c 中的運算子 1。大多數系統預定義運算子都能過載 不值得過載 不能被過載 2過載不能改變優先順序 不能改變結合性 不能改變運算子所需運算元的個數 過載後,可按這些運算子的表達方式使用 運算子過載的語法 一 通過運算子過載函式進行過載 1。運算子過載函式是成員函式 語法形式 type x opera...