C 學習筆記四

2021-07-05 10:15:40 字數 1356 閱讀 6592

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 這種顯式呼叫外,其它都是非顯式的...