c 運算子過載,c 運算子過載

2022-11-13 07:55:19 字數 1973 閱讀 1826

1樓:n維向量

其實第一個回答的程式已經ok了,這裡簡要說明一下:

首先,名稱空間的問題。cout、endl以及ostream都是定義在std這個名稱空間下的,因此在使用前必須包含這個一個using指示:using namespace std;,表明可以使用std裡面的所有內容。

除此以外還有兩種選擇:

1.使用作用域運算子(::),比如cout需要改為std::cout。

2.或者使用using宣告,比如要用cout,那麼就要在開始包含語句:using std:cout;。

其次,ostream沒有合適的複製建構函式。考慮這個宣告:

friend ostream operator<<(ostream &,complex &);

這個函式宣告返回了一個ostream物件,因此實際上包含了一個拷貝構造的動作,需要呼叫拷貝建構函式。請記住,在c++標準規範中所有的io物件都是不可複製或賦值的。

因此,上面的宣告需要改為:

friend ostream& operator<<(ostream &,complex &);

即,改為返回一個ostream的引用。

2樓:匿名使用者

//過載輸出操作符時, 返回值改為流引用

//此句: friend ostream operator<<(ostream &,complex &);

//改為: friend ostream& operator<<(ostream &,complex &);

//同時修改過載函式定義

//原因:返回值型別時, 須要呼叫到拷貝建構函式,而在 iostream庫中,

//流式操作符《的拷貝建構函式是私有的, 所以程式會編譯不過

// 而將返回值改為引用時, 不須呼叫拷貝建構函式

//如下**在你的**基礎上修改, 已編譯通過:

#include

using namespace std;

class complex

complex(double r,double i):real(r),imag(i){}

complex operator+(complex &);

friend ostream& operator<<(ostream &,complex &);

private:

double real;

double imag;

ostream& operator<<(ostream &output,complex &cc)

int main()

3樓:

過載《操作符號,必須返回引用。

#include

class complex

complex(double r,double i):real(r),imag(i){}

complex operator+(complex &);

friend ostream & operator<<(ostream &,complex &);

private:

double real;

double imag;

ostream & operator<<(ostream &output,complex &cc)

int main()

4樓:你技術不行

cc.real和cc.imag是私有成員變數,不能直接呼叫,可以在類中新增函式來獲得。。

5樓:哈倫德拉

在類前面加上下面的就可以了,用的是vc++吧,呵呵class complex;

ostream operator<<(ostream &,complex &);

編譯器的問題呀,可能用英文的並且打sp6補丁就好了

C 運算子過載

其實很簡單,只要你對類的建構函式和解構函式了解的差不多。首先說第一個問題 為什麼會突然出現 string t p 在函式 string operator const char p 中,它接受一個字元指標p,返回一個string類物件,這個你懂吧?這就好辦了,這個函式想返回一個string類物件,必須...

C運算子過載

我想樓主主要是想看到過載函式的實現過程,所以我自動給參加運算的複數付值。考慮你是初學者,我都用的是很簡單的語句寫的,都是一看就懂的句子。include using namespace std class complex private double m image 描述實部 double m rea...

c中運算子過載到底有什麼何意義,C中運算子過載到底有什麼何意義

運算子過載是一種特殊的函式過載。例如int a,b 則求a b值時,在編譯過程中使用的是函式呼叫 opertor a,b 主要作用就是使程式更加簡潔,減少程式設計時間。運算子過載是一種特殊的函式過載。c 的一大特性就是過載 overload 通過過載可以把功能相似的幾個函式合為一個,使得程式更加簡潔...