日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

复习笔记(七)——C++友元

發布時間:2025/3/21 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 复习笔记(七)——C++友元 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 類的友元
    • 友元函數
      • 實例
      • 友元函數的注意事項
    • 友元類
      • 實例

類的友元

可以把某些選定的函數看作類的“榮譽函數”,允許它們訪問類對象中非公共的成員,就好像它們是類的成員一樣,這種函數稱為類的友元。友元可以訪問類對象的任意成員。

可以把一個函數指定為類的友元,也可以把整個類指定為另一個類的友元。

友元函數

友元函數是一種定義在類外部的普通函數,但它需要在類體內進行說明。

為了與該類的成員函數加以區別,定義的方式是在類中用關鍵字friend說明該函數,格式如下:
friend 類型 友元函數名(參數表);

友元函數可以訪問其他類中的私有成員,有助于數據共享,提高程序效率,但它又是對封裝性的一個破壞,所以程序中不能大量使用友元

實例

#include<iostream> #include <math.h> using namespace std;class Coordinate { public:Coordinate(int x=0, int y=0){m_iX = x;m_iY = y;}friend void printXY(Coordinate &c); private:int m_iX;int m_iY; };void printXY(Coordinate &c) {cout<<c.m_iX<<c.m_iY; }int main(void) {Coordinate coor(3,5);printXY(coor); //調用全局友元函數//coor.printXY(coor); //錯誤return 0; }

執行結果:

35

友元函數的注意事項

①友元函數不是類的成員函數,在函數體中訪問對象的成員,必須用對象名加運算符“.”加對象成員名。但友元函數可以訪問類中的所有成員(公有的、私有的、保護的),一般函數只能訪問類中的公有成員。

②友元函數不受類中的訪問權限關鍵字限制,可以把它放在類的公有、私有、保護部分,但結果一樣。

③某類的友元函數的作用域并非該類作用域。如果該友元函數是另一類的成員函數,則其作用域為另一類的作用域,否則與一般函數相同。

④友元函數破壞了面向對象程序設計類的封裝性,所以友元函數如不是必須使用,則盡可能少用。或者用其他手段保證封裝性。

友元類

如果某類B的成員函數會頻繁的存取另一個類A的數據成員, 而A的數據成員的Private/Protectd限制造成B存取的麻煩, B只能通過Public的成員函數進行間接存取。

把B做成A類的友元類,即A類向B類開放其Private/Protectd內容, 讓B直接存取。

友元類:一個類可以作另一個類的友元。

友元類的所有成員函數都是另一個類的友元函數。

友元類的定義:
friend class 類名;

實例

#include <iostream> using namespace std;class CRect;class CTest { public:int Area(CRect &rect); }; class CRect { public:CRect();CRect(int len,int wid);friend class CTest; private:int m_len;int m_wid; }; int CTest::Area(CRect &rect) {return rect.m_len*rect.m_wid; }CRect::CRect() {m_len=m_wid=5; } CRect::CRect(int len,int wid) {m_len=len;m_wid=wid; } int main() {int count;CRect aRect(6,8);CTest aTest;count = aTest.Area(aRect);cout<<"count = "<<count<<endl;return 0; }

執行結果:

count = 48

總結

以上是生活随笔為你收集整理的复习笔记(七)——C++友元的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。