短小(頻繁,且沒有迴圈體)的功能:
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開始,它只能出現在類定義的內部,友...