15、友元函式
1.為什麼要引入友元函式?
在對某些成員函式多次呼叫時,由於引數的型別檢查和安全性檢查都需要時間開銷,
從而影響了程式的執行效率,引入友元後可以提高程式的執行效率;
2.使用格式:
a.是一種定義在類外部的【類】或【普通函式】,但需要在類體內進行說明(前面加
friend關鍵字)
b.不是成員函式,但可以訪問類中的私有成員。(重要!!!!)
3.友元的分類:
a.友元函式
b.友元類
#include
class time
friend void time12(time time); //友元函式申明在類內部
friend void time24(time time);
private:
int hours,minutes;
};void time12(time time)
//友元函式定義在類外部
else
}void time24(time time)
總結:a.友元函式申明在類內部
b.友元函式定義在類外部
->友元函式可以使用類的私有成員
16、友元類 (36_友元二.cpp)
#include
class x
void display() ;
class y;
int x::y=1;
y::y(int i,int j)
void y::display()
總結:a.在類x中申明友元類y
b.在類x外部定義友元類y
c.可以在友元類y內部定義之前的類x的物件,用來訪問x類的內部變數
17、物件的生存期
1.物件的生存期:指物件從被建立開始到釋放為止的時間;
2.按生存期對物件的分類
a. 區域性物件:被定義在乙個函式體或程式塊內,作用域小,生存期短;
b. 靜態物件:被定義在乙個檔案中,它的作用域從定義時起到檔案結
束止;它的作用域較大,生存期較長;
c. 全域性物件:被定義在某個檔案中,它的作用域在包含該檔案的整個
程式中;它的作用域最大,生存期最長;
#include
#include
class a
a::a(char *st)
// destructor called for staticobject
// destructor called for globalobject
總結:a.全域性變數在main函式外,所以一般最先構造。
b.全域性變數在main函式退出才釋放,才呼叫析構函式。
c.全域性變數的生存期最長。
C 學習筆記(四)
指標是指向一些記憶體位址的變數,既可以是資料的位址也可以是函式的位址。所以,可以在執行時改變指標指向的內容。c 的成員指標 pointer to member 遵從同樣的概念,除了所選擇的內容是在類中之內的成員指標。這裡麻煩的是所有的指標需要位址,但在類內部是沒有位址的 選擇乙個類的成員意味著在類中...
c 學習筆記 四 get set
c 中屬性是類,介面,結構的命名成員,可以通過get set訪問器訪問私有成員.如 public class animal private string name public string name getreturn name setname value 通常屬性名稱與要訪問的內部成員名稱相同,...
C 學習筆記 Thinking in C 四
1 運算子過載 1 class byte 2 12 3 關鍵字explicit c 提供了關鍵字explicit,可以阻止不應該允許的經過轉換建構函式進行的隱式轉換的發生。宣告為explicit的建構函式不能在隱式轉換中使用。顯示宣告 ce e 1 ce e2 e1 這種顯式呼叫外,其它都是非顯式的...