友元函數(shù)可以訪問私有成員嗎 友元函數(shù)是否能訪問當(dāng)前類中對象成員的私有成員?
友元函數(shù)是否能訪問當(dāng)前類中對象成員的私有成員?1. 友元函數(shù)是可以直接訪問類的私有成員的非成員函數(shù)。它是在類外定義的普通函數(shù)。它不屬于任何類,但需要在類的定義中聲明。聲明時,只需在好友名稱前添加關(guān)鍵字
友元函數(shù)是否能訪問當(dāng)前類中對象成員的私有成員?
1. 友元函數(shù)是可以直接訪問類的私有成員的非成員函數(shù)。它是在類外定義的普通函數(shù)。它不屬于任何類,但需要在類的定義中聲明。聲明時,只需在好友名稱前添加關(guān)鍵字friend即可。
2. 友元函數(shù)可以訪問類的靜態(tài)、私有和公共成員。
3. friend的功能是提高程序的效率(即減少類型檢查和安全檢查的時間開銷)。然而,它破壞了類的封裝和隱藏,使得非成員函數(shù)可以訪問類的私有成員。
c 友元函數(shù),還是不能訪問私有成員?
因為在Visual Studio 2008中可以正常編譯相同的代碼,但當(dāng)將其放入VC6.0中時,表示您無法訪問類復(fù)合體的私有數(shù)據(jù)成員。根據(jù)C的標準特性,類的friend函數(shù)應(yīng)該允許訪問類的私有數(shù)據(jù)。在VC6.0中重載<<和>>時會出現(xiàn)此問題。奇怪的是,當(dāng)重載其他操作符(如)時,也會訪問類的私有數(shù)據(jù)成員,但不會報告任何錯誤。友元函數(shù)是可以訪問類的所有成員的函數(shù),盡管它們不是類的成員。類授予對其朋友的特殊訪問權(quán)。通常,同一個開發(fā)人員出于技術(shù)和非技術(shù)原因控制類的friend和member函數(shù)(否則,當(dāng)您要更新類時,必須請求其他部分的所有者的許可)。窗體friend type name friend function name(形式參數(shù)列表);然后在類外定義friend function,定義格式與普通函數(shù)相同,但可以通過對象作為參數(shù)直接訪問對象的私有成員。描述如下:
1)必須在類描述中描述friend函數(shù),類描述以關(guān)鍵字friend開始,然后是friend函數(shù)的函數(shù)原型。friend函數(shù)的描述可以出現(xiàn)在類的任何地方,包括私有部分和公共部分;
2)注意friend函數(shù)不是類的成員函數(shù),因此friend函數(shù)的實現(xiàn)與普通函數(shù)相同。在實現(xiàn)friend函數(shù)時,它不需要指明它屬于哪個類。只有成員函數(shù)可以使用作用域符號。
3)友元函數(shù)不能直接訪問類的成員,但只能訪問對象成員。
4)友元函數(shù)可以訪問對象的私有成員,但普通函數(shù)不能;
5)調(diào)用友元函數(shù)時,要訪問的對象應(yīng)該在實際參數(shù)中指明;
6)類之間的友元關(guān)系不能被繼承。
7)一個類的成員函數(shù)也可以是另一個類的友元,但必須首先定義該類。
友元函數(shù)是否能訪問當(dāng)前類中對象成員的私有成員?
您可以訪問。。成員函數(shù)和朋友函數(shù)具有相同的權(quán)限(100%)。主要區(qū)別在于友元函數(shù)的調(diào)用方式類似于f(x),而成員函數(shù)的調(diào)用方式類似于x.f()。因此,在成員函數(shù)(x.f())和友元函數(shù)(f(x))之間進行選擇的能力允許設(shè)計者選擇他認為更可讀的語法,以減少維護成本