五联疫苗安全吗:一个C++的程序,不知何故编译失败

来源:百度文库 编辑:高考问答 时间:2024/05/03 01:22:40
#include<iostream>
using namespace std;
class point
{public:
point(int xx,int yy)
{X=xx;Y=yy;}
friend point operator+(point c1,point c2);
void dispay(){cout<<"("<<X<<","<<Y<<")"<<endl;}
private:
int X,Y;
};
point operator+(point c1,point c2)
{return point(c1.X+c2.X,c1.Y+c2.Y);}
void main()
{
point c1(2,6),c2(4,3),c3;
c1.dispay();
c2.dispay();
c3=c1+c2;
cout<<c3<<endl;
}
编译失败:
Configuration: 014 - Win32 Debug--------------------
Compiling...
014.cpp
E:\shiyan\014.cpp(7) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1786)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
执行 cl.exe 时出错.

014.obj - 1 error(s), 0 warning(s)
究竟是错在哪里呢?请高手帮帮忙.谢谢!

时间长不看记不请了,大概看了下,觉得可能是因为你没有写构造函数,你虽然重载了个构造函数,但在C++中,构造函数可以默认,不过默认是在你没有重载的情况下,C3好像就不对。

没有定义 复制构造函数, 由于你传递的参数不是引用类型,所以在实参传给形参的时候要发生对象的复制,而你恰好没有.可以有两种法:

1.

一个C++的程序,不知何故编译失败
悬赏分:0 - 离问题结束还有 14 天 23 小时
#include<iostream>
using namespace std;
class point
{public:
point(int xx,int yy)
{X=xx;Y=yy;}
friend point operator+(point& c1,point& c2); // 用引用
void dispay(){cout<<"("<<X<<","<<Y<<")"<<endl;}
private:
int X,Y;
};
point operator+(point& c1,point& c2)
{return point(c1.X+c2.X,c1.Y+c2.Y);}
void main()
{
point c1(2,6),c2(4,3),c3;
c1.dispay();
c2.dispay();
c3=c1+c2;
cout<<c3<<endl;
}

2.

一个C++的程序,不知何故编译失败
悬赏分:0 - 离问题结束还有 14 天 23 小时
#include<iostream>
using namespace std;
class point
{public:
point(int xx,int yy)
{X=xx;Y=yy;}
point(const point& old)//复制构造函数
{this.X=old.X;this.Y=old.Y;}
friend point operator+(point c1,point c2);
void dispay(){cout<<"("<<X<<","<<Y<<")"<<endl;}
private:
int X,Y;
};
point operator+(point c1,point c2)
{return point(c1.X+c2.X,c1.Y+c2.Y);}
void main()
{
point c1(2,6),c2(4,3),c3;
c1.dispay();
c2.dispay();
c3=c1+c2;
cout<<c3<<endl;
}

好像没错啊,编辑系统的错误!