C 友元函式問題,關於友元函式

時間 2023-05-18 22:05:10

1樓:測繪地理資訊

錯誤 1 error c2039: 「m1」: 不是「x」的成員。

錯誤 2 error c2039: 「m2」: 不是「y」的成員。

程式中不能寫成void x::m1(x* x,int c)和void y::m2(y* y,int c),直接寫void m1(x* x,int c)和void m2(y* y,int c)就行了。

需要注意的是,乙個類的友元函式並不是它的成員函式,但可以像成員函式那樣訪問該類的所有成員,包括私有成員和保護成員。還有就是你的程式中類x的成員函式m2和類y的成員函式m1只進行了定義,沒有函式的實現,在主函式中使用,10); 和y.

m1(&x,10); 都會出現錯誤。由於不知道你想要實現什麼功能,所以就沒法幫你改了。

2樓:網友

因為vc6出現在標準c++之前。

vc6對友元處理有問題。

對類的先宣告後定義也處理的有問題。

換個編譯器編譯看看吧,如dev-cpp。

3樓:網友

你在class x 中定義類的指標x*?

類的指標x*只能用在例項化指標物件時才能用吧。

c++多選題,關於友元函式的?

4樓:匿名使用者

友元函式不是類的一部分,所以a、b都錯。

友元函式在類內宣告,在類外定義,宣告時需加friend關鍵字且可以不指定形參名,但定義時不能加friend關鍵字,所以c也是錯的。

選abc。

關於友元函式

5樓:陳學陽

從字面上我們可以這樣理解,就象繼承一樣,可以說子繼承父,友元就是朋友,它不是類的組成部分,因此被稱為直接函式呼叫。友元函式不能隱式訪問類成員,而必須將成員操作符用於作為引數傳遞的物件。

友元函式要在乙個類體內說明,形式為:

friend 型別名 友元函式名(形參表);

然後在類體外對友元函式進行定義,定義的格式和普通函式相同,但可以通過物件作為引數直接訪問物件的私有成員。

友元函式說明如下:

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

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

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

5)調用友元函式時,在實際引數中需要指出要訪問的物件!

如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!

6樓:豬頭或火寶寶

你好!!!

有元函式和普通的函式一樣的,都是直接呼叫的,void increment(myclass& f) 這是函式的定義,increment(obj);這是函式的呼叫!!

7樓:匿名使用者

因為友元函式可以直接修改類裡面的所有資料。

作為乙個友元函式

8樓:肚子痛的嘛

友元可以訪問私有的 公共保護當然也能訪問。

c++友元函式和成員函式能不能同名

9樓:釁果昔韞

1.友元函式和類的成員函式都可以訪問類的私有成員變數或者是成員函式,但是他們呼叫的形式不同。

2.成員函式是屬於類的,所以呼叫的時候是通過指標this呼叫的。而友元函式不屬於類,當然也不能有this指標了,也就是在友元函式中不能出現this指標。

同時友元函式是有關鍵字friend修飾。

3.再有的情況下,友元函式是很有用的。特別是在過載一些操作符的時候用處很明顯。

10樓:爾義淡翰翮

這位大兄弟太大意了,public都沒有加上去,setmember()被認為是private成員了,當然編譯不過了。

殺個微不足道的小人物也不能放鬆警惕啊~

友元函式的友元函式

11樓:手機使用者

friend 型別名 友元函式名(形參表);

然後在類體外對友元函式進行定義,定義的格式和普通函式相同,但可以通過物件作為引數直接訪問物件的私有成員 :

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

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

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

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

7)乙個類的成員函式也可以作為另乙個類的友元,但必須先定義這個類。

關於C 友元函式的疑問

這很簡單,你既然用了友元函式,怎麼沒有型別說明呢,你的函式前要加friend友元函式說明。我幫你修改的,你看看行嗎?include using namespace std class complex complex complex int a,int b void complex set void ...

關於c語言函式問題,關於C語言函式問題

一般判定都是為真執行,為假不執行 圖中的 p指的是 以p變數的內容為位址的變數 而你只要看看,它所指向的變數的值是不是0,如果不是0,那麼就會執行 這個地方其實不用換成for,該用什麼用什麼,如果是題目需要的話就只能這樣寫了 for p p 10 然後在裡面寫一堆語句.不過我是沒這樣寫過,不太清楚....

C關於成員函式建構函式的問題

1.是的,對資料成員的初始化可以通過其函式成員,但系統在沒有建構函式的情況下就會自動呼叫預設的建構函式,建構函式是專門進行初始化的。別的函式有別的函式的用途。2.類的資料成員在定義時是不允許初始化的,初始化是通過建構函式的 class date 其初始化是通過建構函式的,當然可以啦!3.以摟住給的題...

問關於愛情友情親情的問題,問乙個關於愛情友情親情的問題

這個三種感情根本就不存在孰輕孰重的問題,更不能一刀切的去做個簡單的排序,只是在某個時間短裡要合理的正確的對待,缺什麼補什麼就像身體補充營養一樣,要合理的分配精力和時間來培養三種感情,樓主問這個問題,想必已經意識到了除愛情外的親情友情了,在你擁有了較好的愛情的時候,要適當的花點時間去關心下朋友和親人了...

關於C語言函式與陣列的問題

include stdio.h void swap int a,int b,int n c語言函式間引數的傳遞全部是值傳遞,分傳值和傳址兩種 你問的問題跟傳址有關,所謂傳址就是將一塊記憶體的首位址值在函式間進行傳遞,實際上也是傳值,只不過這個值不是你所賦予的值,而是位址值 比如我們定義一維陣列,進行...