類的友元函數能夠訪問該類的
⑴ 友元函數是否能訪問當前類中對象成員的私有成員
可以訪問。。成員函數和友元函數具有同等的特權(100% 的)。主要的不同在於友元函數象f(x)這樣調用,而成員函數象 x.f()這樣調用。因此,可以在成員函數(x.f())和友元函數(f(x))之間選擇的能力允許設計者選擇他所認為更具可讀性的語法來降低維護成本...
⑵ 友元函數可以訪問類的私有數據
普通函數是可以將類對象作為參數的,也可以直接訪問public的成員函數和數據成員,但是不能訪問private和protected類型的成員函數和數據成員。
⑶ 友元函數有什麼作用,它主要用在哪些情況下
友元函數的作用就是提供直接訪問對象的私有成員的介面。通過友元,一個不同函數或另一個類中的成員函數可以訪問類中的私有成員和保護成員。
使用情況:
1)必須在類的說明中說明友元函數,說明時以關鍵字friend開頭,後跟友元函數的函數原型,友元函數的說明可以出現在類的任何地方,包括在private和public部分;
2)注意友元函數不是類的成員函數,所以友元函數的實現和普通函數一樣,在實現時不用"::"指示屬於哪個類,只有成員函數才使用"::"作用域符號;
3)友元函數不能直接訪問類的成員,只能訪問對象成員;
4)友元函數可以訪問對象的私有成員,但普通函數不行;
5)調用友元函數時,在實際參數中需要指出要訪問的對象;
6)類與類之間的友元關系不能繼承;
7)一個類的成員函數也可以作為另一個類的友元,但必須先定義這個類。
(3)類的友元函數能夠訪問該類的擴展閱讀:
友元函數的成員函數:
假設f是想正確聲明的函數,c是和它相關的類;
1、虛函數必須是成員函數。如果f必須是虛函數,就讓它成為c的成員函數。
2、operator>>;和operator<<;決不能是成員函數。如果f是operator>>;或operator<<;,讓f成為非成員函數。如果f還需要訪問c的非公有成員,讓f成為c的友元函數;
3、只有非成員函數對最左邊的參數進行類型轉換。如果f需要對最左邊的參數進行類型轉換,讓f成為非成員函數。如果f還需要訪問c的非公有成員,讓f成為c的友元函數;
4、其它情況下都聲明為成員函數;
5、如果以上情況都不是,讓f成為c的成員函數。
⑷ 類的友元函數只能訪問類的私有成員嗎
只能被共有成員函數以及該類的任何友元類或友元函數訪問,肯定錯呀。
私有成員函數也能訪問呀。
⑸ 一個類的友元函數或友元類能夠通過成員訪問運算符訪問該類的
答案是:所有成員
⑹ C++判斷題問題 類的友元函數是指可以訪問本類私有成員的其它類的成員函數 這句話錯在哪裡
在C++的一個類定義中,可以指定某個全局函數、某個其他類或某個其他類的成員函數來直接訪問該類的私有(private)和保護(protected)成員,它們分別稱為友元函數、友元類和友元類函數,通稱為友元。
⑺ 友元函數能訪問類的公有數據成員嗎
當然可以啊!
⑻ 一個類的友元函數可以訪問該類的() A私有成員 B保護成員C公有成員D所有成員
選擇D
成員函數跟友元函數有相同的許可權,都可以訪問公有、保護、私有的成員
⑼ 友元函數有什麼作用
友元函數是可以直接訪問類的私有成員的非成員函數。它是定義在類外的普通函數,它不屬於任何類,但需要在類的定義中加以聲明,聲明時只需在友元的名稱前加上關鍵字friend,其格式如下:
friend 類型 函數名(形式參數);
友元函數的聲明可以放在類的私有部分,也可以放在公有部分,它們是沒有區別的,都說明是該類的一個友元函數。一個函數可以是多個類的友元函數,只需要在各個類中分別聲明。友元函數的調用與一般函數的調用方式和原理一致。
拓展資料:
使用說明
1、友元函數是類外函數,聲明可以放在類的私有或者公有,且都沒有區別;
2、直接調用友元函數不需要通過對象或者指針;
3、友元函數沒有this指針,且不能被繼承;
4、友元函數聲明形式 friend + 普通函數聲明。
參考資料:友元函數
⑽ C++中類的友元函數能不能訪問類的靜態數據成員
1、 友元函數是可以直接訪問類的私有成員的非成員函數。它是定義在類外的普通函數,它不屬於任何類,但需要在類的定義中加以聲明,聲明時只需在友元的名稱前加上關鍵字friend。
2、 友元函數可以訪問類的靜態成員、私有成員和公有成員。
3、友元的作用在於提高程序的運行效率(即減少了類型檢查和安全性檢查等都需要的時間開銷),但是,它破壞了類的封裝性和隱藏性,使得非成員函數可以訪問類的私有成員。