今天學習C++輸入輸出流的時候,遇到一個問題,先貼代碼:
void foutput (ofstream &fout, int m) {
for (int i=1;i<=m;i++) {
fout << i*i+0.5;
}
}
上面這個函數的參數中用了一個ofstream類的變量,在下面使用的時候就發現不能直接把ofstream類的實體用到函數中,編譯會出錯。然後,我把“ofstream fout”變成“ofstream &fout”,也就是用了引用,編譯就通過了,不知道這是為什麼。謝謝回答先
不用引用,當調用foutput(...)的時候就會復制一個新的ofstream 對象。
實現上, Linux gcc, 將ofstream的基類basic_ios的復制構造函數定義為私有函數,這樣禁止對ofstream對象的復制。
實際來說,ofstream對應的是一個輸出文件,支持復制構造會出亂子。