请大家帮我改一个简单的C++程序,谢谢啦。
# include<iostream>
using namespace std;
class TPoint
{
public:
TPoint(int x,int y){X=x;Y=y;}
TPoint(TPoint &p);
~TPoint(){cout<<"Destructor is called\n";}
int getx(){return X;}
int gety(){return Y;}
private:
int X,Y;
};
TPoint::TPoint(TPoint &p)
{
X=p.X;
Y=p.Y;
cout<<"cout_initialization Constructor is called\n";
}
int main()
{
TPoint p1(4,9);
TPoint p2(p1);
TPoint p3=p2;
TPoint p4,p5(2);
cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")\n";
return 0;
},这个程序的构造函数怎么改一下就可以顺利运行了?我改了好多次都不能运行。
[解决办法]
- C/C++ code
# include<iostream>using namespace std;class TPoint{public: TPoint(int x,int y){X=x;Y=y;} TPoint(int x){X=x;Y=x;} TPoint(){} TPoint(TPoint &p); ~TPoint(){cout<<"Destructor is called\n";} int getx(){return X;} int gety(){return Y;}private: int X,Y;};TPoint::TPoint(TPoint &p){ X=p.X; Y=p.Y; cout<<"cout_initialization Constructor is called\n";}int main(){ TPoint p1(4,9); TPoint p2(p1); TPoint p3=p2; TPoint p4,p5(2); //p4 这个没默认构造函数,p5(2)没以参数为1个的构造函数,添加了这两个就好了。 cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")\n"; return 0;}
[解决办法]
[解决办法]
这个更好,建议LZ这样写默认构造函数。
- C/C++ code
# include<iostream>using namespace std;class TPoint{public: TPoint(int x = 0,int y = 0){X=x;Y=y;} TPoint(TPoint &p); ~TPoint(){cout<<"Destructor is called\n";} int getx(){return X;} int gety(){return Y;}private: int X,Y;};TPoint::TPoint(TPoint &p){ X=p.X; Y=p.Y; cout<<"cout_initialization Constructor is called\n";}int main(){ TPoint p1(4,9); TPoint p2(p1); TPoint p3=p2; TPoint p4,p5(2); cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")\n"; return 0;}