国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

剖析C++編程中friend關鍵字所修飾的友元函數和友元類

2020-01-26 14:45:07
字體:
來源:轉載
供稿:網友

在某些情況下,為不是類成員的函數或單獨類中的所有函數授予成員級別的訪問權會更方便。僅類實現器可以聲明其友元。函數或類不能將其自身聲明為任何類的友元。在類聲明中,使用 friend 關鍵字和非成員函數名稱或其他類,以允許其訪問你的類的專用和受保護成員。
語法

  friend class-name;friend function-declarator;

友元聲明
如果聲明以前未聲明的友元函數,則該函數將被導出到封閉非類范圍。
友元聲明中聲明的函數被視為已使用 extern 關鍵字聲明。(有關 extern 的詳細信息,請參閱靜態存儲類說明符。)
盡管具有全局范圍的函數可以在其原型之前聲明為友元函數,但是成員函數在它們的完整類聲明出現前不能聲明為友元函數。以下代碼演示此失敗的原因:

class ForwardDeclared; // Class name is known.class HasFriends{ friend int ForwardDeclared::IsAFriend(); // C2039 error expected};

前面的示例將類名 ForwardDeclared 輸入到范圍中,但是完整的聲明(具體而言,聲明函數 IsAFriend 的部分)是未知的。因此,friend 類中的 HasFriends 聲明會生成一個錯誤。
若要聲明兩個互為友元的類,則必須將整個第二個類指定為第一個類的友元。此限制的原因是該編譯器僅在聲明第二個類的位置有足夠的信息來聲明各個友元函數。
注意
盡管整個第二個類必須是第一個類的友元,但是可以選擇將第一個類中的哪些函數作為第二個類的友元。
友元函數
friend 函數是一個不為類成員的函數,但它可以訪問類的私有和受保護的成員。友元函數不被視為類成員;它們是獲得了特殊訪問權限的普通外部函數。友元不在類的范圍內,除非它們是另一個類的成員,否則不會使用成員選擇運算符(. 和

主站蜘蛛池模板: 九龙县| 新河县| 娱乐| 元阳县| 蒲江县| 库伦旗| 大新县| 和田市| 华蓥市| 泗洪县| 巴楚县| 渭源县| 龙川县| 繁昌县| 东乌珠穆沁旗| 治多县| 金川县| 江陵县| 吴堡县| 拉萨市| 大方县| 泽库县| 延吉市| 奉新县| 新巴尔虎左旗| 斗六市| 连江县| 天台县| 汾阳市| 崇礼县| 海城市| 宁远县| 全椒县| 河间市| 阿瓦提县| 濮阳市| 马山县| 沙坪坝区| 垣曲县| 广西| 兰坪|