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