亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以下代碼內容是關于iostream.h和iostream的使用,求解釋~

以下代碼內容是關于iostream.h和iostream的使用,求解釋~

C++ C
一只名叫tom的貓 2021-12-07 23:19:09
以下程序使用友元函數重載<<、>>,使之能適用于復數類:#include<iostream.h>class Complex{double Real, Image;public:Complex(double r=0, double i=0){Real=r; Image=i;}friend istream& operator>>(istream &, Complex &);friend ostream& operator<<(ostream &, Complex &);};istream& operator>>(istream &in, Complex &c){  in>>c.Real>>c.Image;return in;}ostream& operator<<(ostream &out, Complex &c){  out<<c.Real;if(c.Image>0) out<<'+'<<c.Image<<'i'; else if(c.Image<0) out<<c.Image<<'i'; out<<endl;return out;}void main( ){Complex c1(1, 2), c2;cout<<c1; cout<<"Please input c1 & c2:\n";cin>>c1>>c2; cout<<c1<<c2; }此程序可以正確運行,但是一旦將#include<iostream.h>改成#include<iostream>using namespace std;編譯就無法通過了,提示說重載運算符的函數不能訪問Complex的私有成員,請問這是什么道理?這兩種用法到底有何區別?這個程序怎樣能改成使用第二種寫法的正確程序呢?
查看完整描述

3 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

你這個程序在g++,中改成后面的可以使用。
如果學習C++,必須使用VC2003或者以上版本(Anders寫的)。
VC6/VC98中有很多C++的硬傷,那時候的VC連你說的那個iostream都不能完整支持。
語法兼容性才8X%,也就是說很可能你的程序沒有任何問題,VC也不能編譯通過,#include<iostream.h> 這個就是因為iostream在那個年代還不能完全支持的產物。
至于你說的問題,個人感覺像VC 6的bug之一或者環境中另外有一個同名類。
此外,main的返回值應當是int,你那樣寫在現代編譯器會報錯。

查看完整回答
反對 回復 2021-12-12
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

在某些編譯器中 就必須用#include<iostream.h>
而有的就是必須用#include<iostream>
using namespace std;
有的是兩者都可以 例如你在vs2005就不能用#include<iostream.h>
沒什么意義就是編譯器不認同了

查看完整回答
反對 回復 2021-12-12
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

同編譯器有關吧。兩種寫法都可以,結果一樣。
正規寫法 (新的國際標準)無 .h:
#include<iostream>
using namespace std;

查看完整回答
反對 回復 2021-12-12
  • 3 回答
  • 0 關注
  • 416 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號