fstream引用作為函式返回值問題

2021-07-13 12:55:20 字數 716 閱讀 8091

先貼出的我**:

**中以ofstream的引用和乙個銷售資料類的引用作為入參,函式中返回輸出資料後的流引用:

ofstream& print(ofstream& o,const sale_data& rhs)

**編譯時會報錯:

error c2440: 「return」: 無法從「std::basic_ostream<_elem,_traits>」轉換為「std::ofstream &」

首先,眾所周知,fstream繼承自istream和ofstream。

在我查閱了很多資料和檢視」fstream.h」,」ostream.h」標頭檔案後發現,在fstream中並沒有重寫父類的流操作符,即ostream中的《沒被fstream重寫,於是當「return」後面跟上有《操作符的語句,預設返回父類型別basic_ostream,而不是ofstream 型別,而且基類(ostream)不能賦值給派生類(fstream),所以會報錯。

要解決這個問題,可以把帶《操作符的語句放在「return」外,即:

ofstream& print(ofstream& o,const sale_data& rhs)
或者把ostream&作為函式返回值:

ostream& print(ofstream& o,const sale_data& rhs)

「引用作為函式引數」與 「引用作為函式返回值」

一 引用作為函式引數 作為函式引數時引用有兩種原因 1 在函式內部會對此引數進行修改 2 提高函式呼叫和執行效率。關於第一點,都知道 c 裡提到函式就會提到形參和實參。如果函式的引數實質就是形參,不過這個形參的作用域只是在函式體內部,也就是說實參和形參是兩個不同的東西,要想形參代替實參,肯定有乙個值...

將引用作為函式返回值

要以引用返回函式值,則函式定義時必須遵循以下格式 型別識別符號 函式名 形參列表及型別說明 可見,以引用返回函式值,定義函式時需要在函式名前加 引用作為函式的返回值時,函式的返回值可以理解為函式返回了乙個變數 事實上,函式返回引用時,它返回的是乙個指向返回值的隱式指標 因此,值為引用的函式可以用作賦...

引用作為函式引數返回值

說明 1 以引用返回函式值,定義函式時需要在函式名前加 2 用引用返回乙個函式值的最大好處是,在記憶體中不產生被返回值的副本。例如 include float temp 定義全域性變數temp float fn1 float r 宣告函式fn1 float fn2 float r 宣告函式fn2 f...