C 簡單問題

時間 2022-05-17 20:20:04

1樓:匿名使用者

你看一下你第二個friend是怎麼拼的?呵呵,寫錯字了。

你這個問題可以把運算子過載為成員,也可以過載為友元。結果沒有區別,函式定義的方式不同而已。

過載為成員函式後,a + b,實際上是 a.operator +(b)

過載為友元后,a+b,實際上是operator+(a,b),注意在這裡返回值可以選擇返回新的物件,也可以就返回a!這在過載《和》時是很有用的。

也就是說,如果classa型別的物件a和classa 型別的物件b要經過二元運算後返回'原來'的a,用友元函式的方法解決是最好的。例:

friend classa::operator<<(ostream outstream,classa a)

但是,如果這裡不用友元函式,而用:

classa::operator<<(ostream outstream,classa a)//編譯器會報錯,因為這裡

cout<

別小看這個問題,這個弄清楚了,你就明白c++裡函式呼叫的機制了。

2樓:

#include

class point

void print()const

{cout<<"("<就沒有錯誤了。

或者前向宣告一下

class point;

point operator+(const point& a,const point& b);

也可以。

運算子可以過載為類的友元函式或者是類的成員函式,這裡為類的友元函式

3樓:匿名使用者

友元函式必須在類前宣告,往往忘了這一點

#include

using namespace std;

class point

void print()const

friend point operator+(const point& a,const point& b);

firend point add(const point& a,const point& b);};

4樓:風之傷磊哥

如果你是在vc環境下那肯定有錯,因為vc不支援把成員函式宣告為友原函式,你的兩個friend point operator+(const point& a,const point& b);

firend point add(const point& a,const point& b); 就是在這裡錯了,剩下的你自己動手吧改吧,呵呵

5樓:匿名使用者

前一句有錯麼? 後一句 friend 這個詞寫錯了

友元函式的作用就是讓非類的成員函式可以訪問類的private成員。

6樓:

vc6.0顯示時內部編譯器錯誤 讓尋找技術幫助 挺詭異的問題

有倆個運算元可以用友元的過載 內部函式也能實現 但必須左運算元是類本身(this) 還有第二個friend拼寫錯了

簡單C 問題,C 簡單問題

include using namespace std void main 你一開始就把j 1 j還沒輸入時 是系統內不確定的一個值 要在你輸入j後 在操作它。在c 中變數不先初始化是不能夠進行賦值的,所以 i j 1 cin j 應該調換一下位置。cin j i j 1 這樣才不會出現錯誤。首先,...

簡單c語言問題,求教,簡單C語言問題,求教

的優先順序比 高 c a b 2相當於c a b 2 c a 1 c 00000011 單目運算子 算術運算子 移位運算子 關係運算子 邏輯運算子 條件運算子 賦值運算子 逗號運算子 單目運算子 邏輯非運算子 按位取反運算子 字首增量運算子 字首減量運算子 正號運算子 負號運算子 型別 型別轉換運算...

簡單C語言問題

m為行,n為列 一 二維陣列的定義 二維陣列的定義格式為 型別說明符 陣列名 常量表示式1 常量表示式2 其中常量表示式1表示第一維下標的長度,說明陣列的行數,常量表示式2 表示第二維下標的長度,說明陣列的列數。例如 int a 3 4 該宣告定義了一個3行4列的二維陣列,陣列名為a,該陣列的下標變...