老陈学 C++ 序列之二: 友元函数
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                老陈学 C++ 序列之二: 友元函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            ?class one{
?public:
??one(){};
??operator two ( ) const { return two(); }
??friend ostream& operator << ( ostream& os, const one& o) //成員函數還是全局函數?
??{
???return os << " i " << o.i;
??}
??int i;
?};
定義一個友元函數為內聯函數不會改變友元函數的狀態而且它仍是一個全局函數而不是一個類的成員函數。
什么是友元(friend)?
允許另一個類或函數訪問你的類的東西。
友元可以是函數或者是其他的類。類授予它的友元特別的訪問權。通常同一個開發者會出于技術和非技術的原因,控制類的友元和成員函數(否則當你想更新你的類時,還要征得其它部分的擁有者的同意)。
友元函數要在一個類體內說明,形式為:
friend 類型名 友元函數名(形參表);
然后在類體外對友元函數進行定義,定義的格式和普通函數相同,但可以通過對象作為參數直接訪問對象的私有成員
友元函數說明如下:
1)必須在類的說明中說明友元函數,說明時以關鍵字friend開頭,后跟友元函數的函數原型,友元函數的說明可以出現在類的任何地方,包括在private和public部分;
2)注意友元函數不是類的成員函數,所以友元函數的實現和普通函數一樣,在實現時不用"::"指示屬于哪個類,只有成員函數才使用"::"作用域符號;
3)友元函數不能直接訪問類的成員,只能訪問對象成員,
4)友元函數可以訪問對象的私有成員,但普通函數不行;
5)調用友元函數時,在實際參數中需要指出要訪問的對象,
明天預習:delete一個void指針,會刪除它指向的內存嗎?
答案當然是,會釋放它指向的內存,但不會調用對象的析構函數。
                        
                        
                        ?public:
??one(){};
??operator two ( ) const { return two(); }
??friend ostream& operator << ( ostream& os, const one& o) //成員函數還是全局函數?
??{
???return os << " i " << o.i;
??}
??int i;
?};
定義一個友元函數為內聯函數不會改變友元函數的狀態而且它仍是一個全局函數而不是一個類的成員函數。
什么是友元(friend)?
允許另一個類或函數訪問你的類的東西。
友元可以是函數或者是其他的類。類授予它的友元特別的訪問權。通常同一個開發者會出于技術和非技術的原因,控制類的友元和成員函數(否則當你想更新你的類時,還要征得其它部分的擁有者的同意)。
友元函數要在一個類體內說明,形式為:
friend 類型名 友元函數名(形參表);
然后在類體外對友元函數進行定義,定義的格式和普通函數相同,但可以通過對象作為參數直接訪問對象的私有成員
友元函數說明如下:
1)必須在類的說明中說明友元函數,說明時以關鍵字friend開頭,后跟友元函數的函數原型,友元函數的說明可以出現在類的任何地方,包括在private和public部分;
2)注意友元函數不是類的成員函數,所以友元函數的實現和普通函數一樣,在實現時不用"::"指示屬于哪個類,只有成員函數才使用"::"作用域符號;
3)友元函數不能直接訪問類的成員,只能訪問對象成員,
4)友元函數可以訪問對象的私有成員,但普通函數不行;
5)調用友元函數時,在實際參數中需要指出要訪問的對象,
明天預習:delete一個void指針,會刪除它指向的內存嗎?
答案當然是,會釋放它指向的內存,但不會調用對象的析構函數。
轉載于:https://www.cnblogs.com/Frodo/archive/2007/08/20/862937.html
總結
以上是生活随笔為你收集整理的老陈学 C++ 序列之二: 友元函数的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Natasha V1.3.6.0 的升级
 - 下一篇: Can you answer these