y**********0 发帖数: 425 | 1 class Point{......};
class Line //求两点长度
{
public:
Line(Point xp1, Point xp2);
...
private:
Point p1,p2;
double length;
};
怎么写构造函数,有默认的两点,但是传递新的Point的时候又覆盖原来的两点
(例如整数情况下可以这样写,Line(int xx=0,int yy=0){...}但是要是这样是Point
对象该怎么写呢? | r**a 发帖数: 536 | 2 首先,Line(Point xp1, Point xp2);这个应该写成Line(Point& xp1, Point &xp2);吧
。其次,constructor难道不是
Line::Line(Point& xp1, Point &xp2): p1(xp1), p2(xp2)
{
length = sqrt( (xp1.xx() - xp2.xx()) * (xp1.xx() - xp2.xx()) + (xp1.yy() - xp2.yy()) * (xp1.yy() - xp2.yy()) );
}
p1(xp1)借用Point的copy constructor。而且假设class Point有取x,y坐标的member function xx() and yy()。 | M*S 发帖数: 459 | 3 你可以这么写,
class Point
{
public:
Point(int x=0, int y=0){}
};
class Line
{
public:
Line(const Point& p1=Point(1,1), const Point& p2=Point(2,2)){}
};
【在 y**********0 的大作中提到】 : class Point{......}; : class Line //求两点长度 : { : public: : Line(Point xp1, Point xp2); : ... : private: : Point p1,p2; : double length; : };
| y**********0 发帖数: 425 | 4
great, thanks.
【在 M*S 的大作中提到】 : 你可以这么写, : class Point : { : public: : Point(int x=0, int y=0){} : }; : class Line : { : public: : Line(const Point& p1=Point(1,1), const Point& p2=Point(2,2)){}
|
|