靜態(tài)成員與友元實(shí)驗(yàn)總結(jié) 友元函數(shù)是否能訪問當(dāng)前類中對象成員的私有成員?
友元函數(shù)是否能訪問當(dāng)前類中對象成員的私有成員?1. 友元函數(shù)是可以直接訪問類的私有成員的非成員函數(shù)。它是在類外定義的普通函數(shù)。它不屬于任何類,但需要在類的定義中聲明。聲明時(shí),只需在好友名稱前添加關(guān)鍵字
友元函數(shù)是否能訪問當(dāng)前類中對象成員的私有成員?
1. 友元函數(shù)是可以直接訪問類的私有成員的非成員函數(shù)。它是在類外定義的普通函數(shù)。它不屬于任何類,但需要在類的定義中聲明。聲明時(shí),只需在好友名稱前添加關(guān)鍵字friend即可。
2. 友元函數(shù)可以訪問類的靜態(tài)、私有和公共成員。
3. friend的功能是提高程序的效率(即減少類型檢查和安全檢查的時(shí)間開銷)。然而,它破壞了類的封裝和隱藏,使得非成員函數(shù)可以訪問類的私有成員。
C 中類的友元函數(shù)能不能訪問類的靜態(tài)數(shù)據(jù)成員?
A類{公眾:staticintnumberfriendvoidhanshu()}void Hanshu(){cout<<A::number}inta::number=456//請注意,在初始化靜態(tài)成員時(shí)有一個(gè)錯(cuò)誤。Intmain(){aahanshu()system(“pause”)}還請注意,友元函數(shù)不能訪問類的所有成員。這是一種錯(cuò)誤的理解。正確的理解是類的所有成員都可以通過類的對象訪問友元函數(shù),友元函數(shù)不能直接訪問類的私有成員,如classA{I}公眾:friendvoidf()}void f(){a=1}//這將導(dǎo)致錯(cuò)誤。它只能通過類對象訪問,比如void f(){Amama。A=1}//這是正確的。如果f不是朋友,媽。A是錯(cuò)誤的。