请朋友们帮我看看这个C++代码,谢谢!!
#include<iostream>
using namespace std;
class Complex
{public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
friend Complex operator + (Complex &c1,Complex &c2);
void display();
private:
double real;
double imag;
};
Complex operator + (Complex &c1,Complex &c2)
{ return Compex(c1.real+c2.real,c1.imag+c2.imag);}
void Complex::display()
{cout<<"("<<real<<","<<img<<"i)"<<endl;}
int main()
{
Complex c1(2,4),c2(3,55),c3;
c3=c1+c2;
cout<<"c1+c2=";c3.display();
}
我在VC6.0下写的,可编译后,提示,编译器错误!怎么办呢?
问题点数:20、回复次数:17Top
1 楼llf_hust()回复于 2006-03-03 22:01:23 得分 0
#include<iostream.h>
class Complex
{
public:
Complex()
{
real = 0;
imag = 0;
}
Complex(double r,double i)
{
real = r;
imag = i;
}
friend Complex operator + (Complex &c1,Complex &c2);
void display();
private:
double real;
double imag;
};
Complex operator + (Complex &c1,Complex &c2)
{
return Complex(c1.real+c2.real,c1.imag+c2.imag);
}
void Complex::display()
{
cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
int main()
{
Complex c1(2,4),c2(3,55),c3;
c3 = c1 + c2;
cout<<"c1+c2=";
c3.display();
return 0;
}Top
2 楼cunsh(村少)回复于 2006-03-03 22:01:59 得分 0
Complex operator + (Complex &c1,Complex &c2)
{ return Compex(c1.real+c2.real,c1.imag+c2.imag);} // compex 拼错了.
void Complex::display()
{cout<<"("<<real<<","<<img<<"i)"<<endl;} // img 拼错了.Top
3 楼haiyee(三只眼)回复于 2006-03-03 22:09:58 得分 0
楼上的真强,你可以做白盒测试了,呵呵~~~~Top
4 楼stwutong(wsdf)回复于 2006-03-03 22:21:35 得分 0
谢谢,楼上的兄弟!!
我真粗心!
Top
5 楼jobs002(Oh! Office)回复于 2006-03-04 09:21:37 得分 0
学习学习....Top
6 楼wqtl_357(Step By Step!)回复于 2006-03-05 19:03:14 得分 0
#include<iostream.h> //改为旧式头文件,
//using namespace std;
class Complex
{
public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
friend Complex operator + (Complex &c1,Complex &c2);
void display();
private:
double real;
double imag;
};
Complex operator + (Complex &c1,Complex &c2)
{ return Complex(c1.real+c2.real,c1.imag+c2.imag);}
void Complex::display()
{cout<<"("<<real<<","<<imag<<"i)"<<endl;}
int main()
{
Complex c1(2,4),c2(3,55),c3;
c3=c1+c2;
cout<<"c1+c2=";c3.display();
return 0;
}Top
7 楼t_jl1979(骑士)回复于 2006-03-05 20:01:08 得分 0
Complex operator + (Complex &c1,Complex &c2)
{ return Compex(c1.real+c2.real,c1.imag+c2.imag);} // compex 拼错了.
void Complex::display()
{cout<<"("<<real<<","<<img<<"i)"<<endl;} // img 拼错了.
同意Top
8 楼Cccufo(Ccc)回复于 2006-03-05 20:33:34 得分 0
为什么,头文件的定义,会有区别讷?请问高人解释一下讷~~~~
Top
9 楼bohlee(我心澎湃)回复于 2006-03-06 10:10:54 得分 0
不理解楼上的话Top
10 楼zzw820626(偶要分,偶要星星)回复于 2006-03-06 12:50:52 得分 0
呵呵,不明白什么问题Top
11 楼aniude(重返荣耀)回复于 2006-03-06 13:25:05 得分 0
同意2楼Top
12 楼Cccufo(Ccc)回复于 2006-03-07 18:07:57 得分 0
用#include<iostream.h> 和用 #include<iostream> using namespace std
两者的区别何在讷?是不是与编译器有关?Top
13 楼MinZI(黑夜彩虹)回复于 2006-03-07 21:36:00 得分 0
#invlude<iostream.h>
与
#include<iostream>
use namespace std;
是相同的。。Top
14 楼hijxiao(李逍遥)回复于 2006-03-08 09:11:42 得分 0
呵呵,我将你的程序的小错误改了改:
#include<iostream>
using namespace std;
class Complex
{public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
friend Complex operator + (Complex &c1,Complex &c2);
void display();
private:
double real;
double imag;
};
Complex operator + (Complex &c1,Complex &c2)
{ return Complex(c1.real+c2.real,c1.imag+c2.imag);}
void Complex::display()
{cout<<"("<<real<<","<<imag<<")"<<endl;}
int main()
{
Complex c1(2,4),c2(3,55),c3;
c3=c1+c2;
cout<<"c1+c2=";
c3.display();
return 0;
}Top
15 楼wqtl_357(Step By Step!)回复于 2006-03-08 10:43:52 得分 0
#include <iostream.h>是旧式头文件,按理说这里改用新头文件不会出现错误,但是问题恰恰是用新头文件带来的内部编译错误。这可能是个例外吧Top
16 楼ichend(心雅)回复于 2006-03-08 16:16:40 得分 0
同意上楼的观点,基本上那就是error的根本所在.
现简单一说<iostream.h>和<iostream>的区别:
1. .h格式的头文件在98年9月份被标准委员会抛弃.(尽管现在还是大行其道)
2. iostream.h只支持窄字符集,iostream则支持窄/宽字符集。
3. iostream组件全部放入namespace std中,防止了名字污染。
这就是为什么再用#include<iostream>时总要加个using namespace std;的原因.
4. 新标准对iostream作了很多的改动,接口和实现都有了变化。
少了.h却多了更多的内涵.真是简约而不简单啊:)
谢谢
Top
17 楼Sprain001(Sprain)回复于 2006-03-15 22:52:01 得分 0
#include <iostream.h>是旧式头文件。
#include <iostream>是标准的 规范的。Top




