c 內聯函式 友元函式 友元類 運算子過載

2021-10-01 16:54:00 字數 2135 閱讀 8547

短小(頻繁,且沒有迴圈體)的功能:

1.內聯函式:

特點:1.在函式名前加inline關鍵字;

2.以空間換取時間,編譯階段整個函式體替換呼叫部分;

2.巨集定義:

1.對變數巨集定義:

#define 巨集名 值

2.帶參函式的巨集定義

#define 函式名(形參表:不需要型別) 函式體

1.整體思維

2.不進行型別檢測

3.傳遞資料型別

4.多行 \

特殊的函式(類中):

1.內聯函式:

隱式內聯:將成員函式的定義寫在class類的定義中;

顯式內聯:在宣告和定義前加上inline關鍵字;

2.友元函式:(破壞了類的封裝性,訪問類的所有成員(包含私有))

宣告:1.寫在類中 2.在宣告前friend關鍵字

定義和呼叫:和普通函式相同(友元函式不屬於類的成員函式(沒有this指標))

友元類:該類的所有成員函式都是友元函式;

1.寫法:a是b的友元類(在b類中寫上friend class a;)

2.特點:1.不可逆性:a是b的友元類,b不一定是a的友元類;

2.不可傳遞性:a是b的友元類,b是c的友元類,a不一定是c的友元類;

3.不可繼承性:a是b的友元類,c是a的子類,c不一定是b的友元類;

運算子過載:使自定義型別的物件可以進行運算;

1.成員函式:

返回值型別 operator運算子(形參表);

2.友元函式:(引數個數相對於成員函式多1個)

friend 返回值型別 operator運算子(形參表);

注意:1.能寫成成員函式的運算子過載一定可以寫成友元,反之不成立;

2.區分前置和後置是在過載後置運算子的形參中寫上int;

(int沒有實際意義,只是為了區分前後置)

3.當運算子的左表示式不是當前類的物件時,只能寫成友元;

(例如輸入》 輸出<<)

#pragma once

#include

using

namespace std;

class

clock

;

#include

"clock.h"

clock::

clock

(int h,

int m,

int s)

:hour

(h),

minute

(m),

second

(s)clock::

~clock()

//前置++

clock& clock::

operator++(

)if(minute ==60)

if(hour ==24)

//判斷大於等於60

return

*this

;//返回自身

}//後置++:

clock clock::

operator++(

int)

if(minute ==60)

if(hour ==24)

////

//3.返回沒有自增之前的時間

return temp;

}ostream&

operator

<<

(ostream& os,

const clock& c)

istream&

operator

>>

(istream& is, clock& c)

clock clock::

operator-(

const clock& other)

----------------------------------

1. 建構函式私有化:防止在類外建立物件

析構函式私有化:防止在類外建立除堆區以外的物件

過載new運算子:防止建立堆區的物件

2.建立靜態成員函式:用來建立物件

3.建立靜態成員:儲存堆區物件的位址

C 友元函式 友元類 友元成員函式

眾所周知,c 控制對類物件私有部分的訪問。通常,公有類方法提供唯一的訪問途徑,但是有時候這種限制太嚴格,以至於不適合特定的程式設計問題。在這種情況下,c 提供了另外一種形式的訪問許可權 友元,友元有3種 友元函式 友元類 友元成員函式。通過讓函式成為類的友元 即 友元函式 可以賦予該函式與類的成員函...

友元 友元函式 友元類和友元成員函式 C

有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...

友元 友元函式 友元類和友元成員函式 C

有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...