提取,插入符可以過載為類成員函式嗎?是不是隻能過載為友元函式

2021-04-17 19:18:54 字數 1740 閱讀 8385

1樓:匿名使用者

總的來講,當然是可

復以的,前制提是第一個操作物件的類你能控制的。

實際上,你很有可能在討論 operator<<(ostream &, your_class &) 這樣的過載

那是不行的,因為ostream類不是你能控制的,所以你不能在ostream裡面加一個成員函式,你只能寫成普通函式。

友元並不是必須的(雖然一般來說會需要),只有當這個函式需要用到your_class的私有成員時,才需要把它申明為your_class類的友元。

c++運算子過載中 過載為類的成員函式和過載為類的友元函式 的區別是什麼?

2樓:匿名使用者

友元函式

bai:具有與du類成員函式相同訪問zhi權利的「非dao成員函式」,他可以訪問類專的私有和保護成員屬——通過該類物件、物件指標或其引用。

簡單且一般的說:運算子過載為類的成員函式,他的引數個數會比「該運算子的操作符」少一,而運算子過載為友元函式時,他的引數與其操作個數是相同的。

3樓:匿名使用者

友員函式是指來在類內說明源()也可定義的一friend 說明的 其可以像成員函式一樣訪問類的各個成員但是其不屬於類因此其不能用this訪問列如

friend void sum(int ,int);友員函式沒有this指標;其運算子過載

4樓:

類的成員函式定義就在類裡面,但是類的友元函式定義在其他類裡面。

呼叫的函式不在同一個類中,它們定義也不在同一個類中。

為什麼賦值運算子只能作為成員函式進行過載,而不能作為友元函式過載

5樓:平整土地

因為編譯器會提供一個預設的賦值運算子,你如果把自己定義賦值運算子的寫成友元的話,函式的引數列表不一樣,不會發生過載;所以編譯器禁止了這種行為。

6樓:匿名使用者

c++規定=,[ ],(),->這四個運算子只能被過載為類的非靜態成員函式,其他

的可以被友元過載版,主要權是因為其他的運算子過載函式都會根據引數型別或數目進行精確匹配,這四個不具有這種檢查的功能,用友元定義就會出錯

7樓:宓清福文軒

好久不寫c++了,

我給你這個一個思路

它是可以作為左值的,

所以需要return

*this;

這種形式返回引用

友元函式是沒有this指標的,對吧

賦值運算子返回的是必須引用型別,這個是關鍵!!!

所以,rt

8樓:

這應該是一個規定吧。

c++中的過載運算子<<和>>為什麼是只可以為友元函式,不可是成員函式?我覺得沒問題呀, 10

9樓:匿名使用者

如果是過載雙目來操作符(即為類源

的成員函式),就只要設定一個引數作為右側運算量,而左側運算量就是物件本身。。。。。。

而 >> 或<< 左側運算量是 cin或cout 而不是物件本身,所以不滿足後面一點。。。。。。。。就只能申明為友元函式了。。。

如果一定要宣告為成員函式,只能成為如下的形式:

ostream & operator<<(ostream &output)

所以在運用這個《運算子時就變為這種形式了:data<

不合符人的習慣。

c運算子過載問題

所謂過載,就是重新賦予新的含義。函式過載就是對一個已有的函式賦予新的含義,使之實現新功能,因此,一個函式名就可以用來代表不同功能的函式,也就是 一名多用 運算子也可以過載。實際上,我們已經在不知不覺之中使用了運算子過載。例如,大 家都已習慣於用加法運算子 對整數 單精度數和雙精度數進行加法運算,如5...

求助關於遞增遞減運算子過載的問題

aclass a a 呼叫第二種 a 呼叫第一種 const 說明返回的是常量即無法修改值,或呼叫會修改值得方法 aclass 呼叫aclass operator aclass 呼叫const aclass operator int 你的第二個問題回答了第一個問題。很久以前 八十年代 沒有辦法區分 ...

c中的 運算子過載 是什麼意思 回答要通俗

c 本身不帶 的操作需要你自己來寫 這就需要操作符過載 就是說,某個運算子本身有自己的作用,代表著特定的運算含意,而過載後它就可以進行另一種運算操作了。就是修改運算子本身的含義,使之在使用的時候執行你定義的操作 就是說,加減乘除,在數學中的意思你一定是知道的,而c 也預設會按照約定俗成的規則來處理,...