友元函式的作用就是提供直接訪問物件的私有成員的介面。透過友元,一個不同函式或另一個類中的成員函式可以訪問類中的私有成員和保護成員。
使用情況:
1)必須在類的說明中說明友元函式,說明時以關鍵字friend開頭,後跟友元函式的函式原型,友元函式的說明可以出現在類的任何地方,包括在private和public部分;
2)注意友元函式不是類的成員函式,所以友元函式的實現和普通函式一樣,在實現時不用"::"指示屬於哪個類,只有成員函式才使用"::"作用域符號;
3)友元函式不能直接訪問類的成員,只能訪問物件成員;
4)友元函式可以訪問物件的私有成員,但普通函式不行;
5)呼叫友元函式時,在實際引數中需要指出要訪問的物件;
6)類與類之間的友元關係不能繼承;
7)一個類的成員函式也可以作為另一個類的友元,但必須先定義這個類。
擴充套件資料:
友元函式的成員函式:
假設f是想正確宣告的函式,c是和它相關的類;
1、虛擬函式必須是成員函式。如果f必須是虛擬函式,就讓它成為c的成員函式。
2、operator>>;和operator>;或operator
3、只有非成員函式對最左邊的引數進行型別轉換。如果f需要對最左邊的引數進行型別轉換,讓f成為非成員函式。如果f還需要訪問c的非公有成員,讓f成為c的友元函式;
4、其它情況下都宣告為成員函式;
5、如果以上情況都不是,讓f成為c的成員函式。
友元函式的作用就是提供直接訪問物件的私有成員的介面。透過友元,一個不同函式或另一個類中的成員函式可以訪問類中的私有成員和保護成員。
使用情況:
1)必須在類的說明中說明友元函式,說明時以關鍵字friend開頭,後跟友元函式的函式原型,友元函式的說明可以出現在類的任何地方,包括在private和public部分;
2)注意友元函式不是類的成員函式,所以友元函式的實現和普通函式一樣,在實現時不用"::"指示屬於哪個類,只有成員函式才使用"::"作用域符號;
3)友元函式不能直接訪問類的成員,只能訪問物件成員;
4)友元函式可以訪問物件的私有成員,但普通函式不行;
5)呼叫友元函式時,在實際引數中需要指出要訪問的物件;
6)類與類之間的友元關係不能繼承;
7)一個類的成員函式也可以作為另一個類的友元,但必須先定義這個類。
擴充套件資料:
友元函式的成員函式:
假設f是想正確宣告的函式,c是和它相關的類;
1、虛擬函式必須是成員函式。如果f必須是虛擬函式,就讓它成為c的成員函式。
2、operator>>;和operator>;或operator
3、只有非成員函式對最左邊的引數進行型別轉換。如果f需要對最左邊的引數進行型別轉換,讓f成為非成員函式。如果f還需要訪問c的非公有成員,讓f成為c的友元函式;
4、其它情況下都宣告為成員函式;
5、如果以上情況都不是,讓f成為c的成員函式。