C 筆記02(類的各種過載 友元)

2021-10-07 13:11:56 字數 2279 閱讀 6606

單目加減法±±的過載

#include

#include

using

namespace std;

class

a27;

a27 operator++(

) a27 operator++(

int)};

intmain()

//3//2

//3//3

雙目運算子±*/的過載:

class

a27;

a27 operator

+(a27 &a)

a27 operator

-(a27 &a)

a27 operator

*(a27 &a)

a27 operator

/(a27 &a)};

intmain()

//6//8

//-2

//0

過載關係運算子:(同理,小於號、邏輯等於號也可以這樣處理)

class

a27;

bool

operator

>

(const a27& a)

else}}

;int

main()

//1 (bool為真)

賦值運算子「=」號過載

class

a27;

void

operator=(

const a27 &a)};

intmain()

// 2

()過載(即使得類直接可以被呼叫)

class

a27;

a27 operator()

(int a,

int b,

int c)};

intmain()

//2//8

運算子過載

class

a27}

;int

operator

(int i)

else}}

;int

main()

// 2

輸入輸出過載

class

a27}

;a27

(int a)

;friend ostream &

operator

<<

( ostream &output,

const a27 &a )

friend istream &

operator

>>

( istream &input, a27 &a )};

intmain()

//0//>>1

//1

過載輸入輸出是友元方式實現的,下面再講講友元:

6. 友元函式:友元並不是成員函式,以關鍵字friend進行區分,它可以訪問類中的私有成員。其破壞了封裝和引用,但是方便了開發,下面是乙個友元的例子:

class

point

friend

float

dist

(point &a, point &b)

;private

:int a;

int b;};

float

dist

(point &a, point &b)

;int

main()

//5

可見,友元函式可以取得類中私有變數並進行運算。

友元可以定義在內部,也可以定義在類體外部。無論定義在內部還是外部,都是直接調用友元函式名,不需要加"類."。

7. 友元類:友元類可以訪問另乙個類的似有變數,但另乙個類不能訪問友元類:

classa;

class

bvoid

printx()

};intmain()

需要在被訪問的類中宣告友元類的名字。

總結一下,這篇筆記講了c++的各種過載(還有->成員訪問過載沒講)以及友元;之後如果有機會,繼續講講c++的多執行緒、多程序、web套接字程式設計、vector(講了vector之後,才能講->過載)等等。希望能幫到大家;看完了01和02兩篇筆記,應付c++期末考基本是沒問題的了~

有錯誤、問題歡迎向我反映討論~[email protected]

C 日期類 cout 過載 友元

日期類c 實現 類的主要內容 1.成員變數 年 year,月month,日day 2.友元,過載實現本類的輸出列印 3.isvalid 在建構函式中判斷日期是否有效 4.在日期上往前往後新增一定的天數 5.計算兩短日期的差值 類定義 date.h ifndef date h define date ...

c 筆記7 友元函式及友元類

一 友元 作用 提高了程式的執行效率 減小了型別的檢查和安全性檢查所需的時間開銷,以及避免通過成員函式訪問私有成員變數壓棧出棧等操作 但破壞了類的封裝特性,使得非成員函式可以訪問類的私有成員。格式如下 friend 型別 函式名 形式引數 二 友元函式 友元函式是可以直接訪問類的私有成員的非成員函式...

C 友元函式 友元類

友元函式和友元類 採用類的機制後實現了資料的隱藏與封裝,類的資料成員一般定義為私有成員,成員函式一般定義為公有的,依此提供類與外界間的通訊介面。但是,有時需要定義一些函式,這些函式不是類的一部分,但又需要頻繁地訪問類的資料成員,這時可以將這些函式定義為該函式的友元函式。除了友元函式外,還有友元類,兩...