C++定义两个类:点类和线段类实现以下要求

题目:

定义点类(Point),数据成员是一个点的坐标double x,y;

定义线段类(Line),包括如下数据成员

   static int num;   //程序中创建的线段对象的个数

   Point p1,p2;       //线段的起点和终点

   int color;             //线段的颜色

写出main函数输出线段的长度,输出线段的详细信息(包括线段的起点和终点的坐标,线段的颜色和线段对象的个数)。

要求:1.所有数据成员必须定义为私有(private)

      2.这两个类都要有有参和无参的构造函数和拷贝构造函数,main函数中测试这些构造函数

      3.设计合理的类结构。

实现代码:

#include<iostream>
#include<cmath>
using namespace std;
class Point 
{
private:
	double x, y;
public:
	Point();
	Point(double x_, double y_);
	void set(double x__, double y__);
	double changdu( Point p);
	double Getx() { return x; }
	double Gety() { return y; }
	void shuchu();
	void set_point(Point& p)
	{
		x = p.x;
		y = p.y;
	}
};
Point::Point()
{
		x = 0; y = 0;
}
Point::Point(double x_, double y_)
{
		x = x_; y = y_;
}
void Point::set(double x__, double y__)
{
	x = x__;
	y = y__;
}
double Point::changdu( Point p)
{
	double changdu;
	changdu = sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
	return changdu;
}
void Point::shuchu()
{
	cout << x << "," << y << endl;
}
class Line 
{
private:
	static int num;
	Point p1, p2;
	int color;
public:
	Line();
	Line(double p1x, double p1y, double p2x, double p2y, int colour);
	Line(Point p0, Point p0_, int colour);
	void set_line();
	void set_line(double p1x, double p1y, double p2x, double p2y);
	void set_line(Point p1__, Point p2__);
	Line(Line &l)
	{
		p1.set_point(l.p1);
		p2.set_point(l.p2);
		color = l.color;
		num++;
	}
	void display();
	~Line()
	{
		num--;
	}
};


Line::Line() 
:p1(0, 0), p2(0,0), color(0)
{
	num++;
}
void Line::set_line()
{
	p1.set(0, 0);
	p2.set(0, 0);
	num++;
}
Line::Line(double p1x, double p1y, double p2x, double p2y, int colour)
:p1(p1x,p1y),p2(p2x,p2y),color(colour)
{
	num++;
}
void Line::set_line(double p1x, double p1y, double p2x, double p2y)
{
	p1.set(p1x, p1y);
	p2.set(p2x, p2y);
}
void Line::set_line(Point p1__, Point p2__)
{
	p1 = p1__;
	p2 = p2__;
}
Line::Line(Point p1, Point p2, int colour)
:p1(p1), p2(p2), color(colour)
{
	num++;
}
void Line::display()
{
	cout << "起点:";
	p1.shuchu();
	cout << "终点:";
	p2.shuchu();
	cout << "颜色:" << color << endl;
	double temp = p1.changdu(p2);
	cout << "长度:" << temp << endl;
	cout << "线段个数:" <<Line::num << endl;
}
int Line::num = 0;
int main()
{
	Line l1(10, 20, 30, 40, 5);
	l1.display();//1
	Point p1(23, 56), p2(14, 37);
	Line l2(p1, p2, 50);
	l2.display();//2
	l2.set_line(p1, p2);
	l2.display();//2
	Line l3(l1);
	l3.display();//3
	Line l4;
	l4.display();//4
	l4.set_line(10, 20, 30, 40);
	l4.display();//4
	return 0;
}

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值