友元的作用 友元函數(shù)與成員函數(shù)的區(qū)別?
友元函數(shù)與成員函數(shù)的區(qū)別?成員函數(shù)是類定義的一部分,通過(guò)特定對(duì)象調(diào)用。成員函數(shù)可以在不使用成員運(yùn)算符的情況下隱式訪問(wèn)調(diào)用對(duì)象的成員。友元函數(shù)不是類的一部分,因此它們被稱為直接函數(shù)調(diào)用。友元函數(shù)不能隱式
友元函數(shù)與成員函數(shù)的區(qū)別?
成員函數(shù)是類定義的一部分,通過(guò)特定對(duì)象調(diào)用。
成員函數(shù)可以在不使用成員運(yùn)算符的情況下隱式訪問(wèn)調(diào)用對(duì)象的成員。友元函數(shù)不是類的一部分,因此它們被稱為直接函數(shù)調(diào)用。友元函數(shù)不能隱式訪問(wèn)類成員,但必須對(duì)作為參數(shù)傳遞的對(duì)象使用成員運(yùn)算符。
C 中類的友元函數(shù)能不能訪問(wèn)類的靜態(tài)數(shù)據(jù)成員?
A類{公眾:staticintnumberfriendvoidhanshu()}void Hanshu(){cout<<A::number}inta::number=456//請(qǐng)注意,在初始化靜態(tài)成員時(shí)有一個(gè)錯(cuò)誤。Intmain(){aahanshu()system(“pause”)}還請(qǐng)注意,友元函數(shù)不能訪問(wèn)類的所有成員。這是一種錯(cuò)誤的理解。正確的理解是類的所有成員都可以通過(guò)類的對(duì)象訪問(wèn)友元函數(shù),友元函數(shù)不能直接訪問(wèn)類的私有成員,如classA{I}公眾:friendvoidf()}void f(){a=1}//這將導(dǎo)致錯(cuò)誤。它只能通過(guò)類對(duì)象訪問(wèn),比如void f(){Amama。A=1}//這是正確的。如果f不是朋友,媽。A是錯(cuò)誤的。
什么是類友元函數(shù)?
首先,friend是一種在類外定義的公共函數(shù)或類,但它需要在類內(nèi)進(jìn)行解釋。為了區(qū)別于類的成員函數(shù),在描述之前添加了關(guān)鍵字friend。
朋友不是成員函數(shù),但它可以訪問(wèn)類中的私有成員。因此,友元聲明只能出現(xiàn)在類定義中。因?yàn)楹糜巡皇鞘跈?quán)類的成員,所以它不受其類的聲明區(qū)域public private和protected的影響。