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