簡述c 語言引入友元的原因

時間 2025-02-26 18:05:10

1樓:網友

c++中最主要的特點就是實現對資料的封裝性。 但是有的時候我們需要呼叫其他物件中的某些資料成員,當然是私有成員。 但是c++中定義了本類的資料成員只有本類的成員函式能夠呼叫。

所以就出現了有元函式 ,就像你的臥室。只有你的家人(私有資料)或者你希望你的好朋友(有元函式)才能訪問一樣。

我的理解就是這樣。

2樓:網友

知道特點就知道了。

1)必須在類的說明中說明友元函式,說明時以關鍵字friend開頭,後跟友元函式的函式原型,友元函式的說明可以出現在類的任何地方,包括在private和public部分;

2)注意友元函式不是類的成員函式,所以友元函式的實現和普通函式一樣,在實現時不用"::指示屬於哪個類,只有成員函式才使用"::作用域符號;

3)友元函式不能直接訪問類的成員,只能訪問物件成員,4)友元函式可以訪問物件的私有成員,但普通函式不行;

5)呼叫友元函式時,在實際引數中需要指出要訪問的物件,6)類與類之間的友元關係不能繼承。

3樓:匿名使用者

網上一搜到處都是。

c++ 類的友元函式必須在類的作用域以外被定義 為什麼是不對的?

4樓:可以

worker(){預設構造函bai數,其作用是把類du的私有成員變數zhi初始化為string類的預設dao值。

也就是空字元版串。

worker(){是解構函式權,其作用是在超出物件的作用域後,將物件所佔的記憶體給釋放掉。

避免實體記憶體被用盡。

5樓:網友

類的友元函式,其bai實不是類的成員函式du,因此需zhi要在類外定義dao

class a

void fun()

a裡面版的就是類的作用域,外權。

面定義的fun就不是類a的作用域了。

6樓:匿名使用者

類的作用域之外。

復的意思應制該是 關於域作用符的問題「

bai::" 。一du般情況下 :

class a

當實現的時zhi候 ,在類的作用域dao內指的是需要用「::來限定它是這個類的成員 。

int a::add(int x,int y)而對於友元函式 ,它不是類的成員函式 ,在定義的時候不需要使用域作用符。

int sum(int x,int y)

友元函式可以向成員函式一樣訪問類的私有成員。

7樓:網友

友元在類裡面宣告定義一起寫完全沒問題,只不過就算寫定義了,這個友元也不是這個類的。

c++中,判斷題:可以把乙個一般函式說明為某類的友元函式,也可以將某類的成員函式說明為另類的友元函式

8樓:

1)構造析構除外!這兩個函式,不能成為友元,其他成員函式可以成為另乙個類的友元。

2)啥叫一般函式,這個概念不嚴密,外部函式吧!或者全域性函式(外部函式,和外部靜態函式?

這種不是某個類的成員函式的函式,可以成為類的友元,這個說法是正確的!

這種友元,可以類內說明,類外定義,也可以直接在,類內部定義,但是本質上,還是外部函式,不是類的成員,因為可以看成類的介面,所以可以在類內定義。

3)類也可以成為類的友元,乙個類成為另乙個類的友元,該類的所有函式,都可以看成那乙個類的友元,可以訪問那個類的一切成員!但從語法上講,這些函式不是友元,類才是!這種友元關係是單向的!

4)乙個函式可以是幾個類的友元,乙個類也可以成為幾個類的友元!

9樓:巴扎嘿

友元函式的定義。

友元函式是指某些雖然不是類成員卻能夠訪問類的所有成員的函式。

一般函式應該指的是非類成員函式,將乙個非類成員函式作為某個類的友元函式,這個應該是沒有錯的,很多運算子過載不都是友元函式麼。

某個類成員函式說明為另乙個類的成員函式,這個也是可以的啊。

為什麼我感覺是對的?

這裡有個帖子寫的不錯,有關於友元函式的。

大家一起學習一下,找出錯誤。

10樓:網友

可以把乙個一般函式說明為某類的友元函式 --正確。

也可以將某類的成員函式說明為另類的友元函式 --錯誤:

可以將某類a說明為另類b的友元,則a的函式皆為b的友元函式。

C語言 簡述一下“陣列和指標的關係”

我就是很煩 陣列是一類同型別變數的集合,類似於屬於上的集合的概念,數字也是有集合的,比如整數集,實數集等。陣列也是一個集合,陣列的名字是集合的名字,陣列後面的方括號裡的數字,表示這個集合的大小,陣列名前面的型別說明符,表示這個陣列是什麼型別的集合,比如 int a 5 a是陣列的名字,因為我們後面要...

簡述市場營銷4p轉向4c的原因,簡述市場營銷4p轉向4c的原因 10

我的理解 它是一種營銷觀念的昇華。是從產品觀念到消費者需求觀念的轉變。 從產品到客戶的轉變,也是市場化運營 市場營銷中的4p,4c代表什麼 4p在市場營銷中常常提起 4p理論是營銷策略的基礎 簡單從其含義上理解,4p是指 產品 product price 渠道 place promotion 在市場...

求三題C語言題目答案的原因

慕名曉白 1.while根據對它後面的條件表示式的真假值來判斷是否執行一次迴圈,這裡的條件表示式是n 0,即給n賦值為0,整個條件表示式值為0.在c語言中,條件表示式的非零值表示真,零值表示假,所以該迴圈執行0次。2.ss 2 表示由2個abc 結構體組成的陣列,結構體abc由三個int整型數a,b...