设计一个圆形类(Circle),和一个点类(point),计算点和圆的关系
圆的头文件
#pragma once
#include<iostream>
#include<string>
#include"point.h"
using namespace std;
class Circle
{
public:
void setR(int r);
int getR();
void setCenter(Point center);
Point getCenter();
private:
int m_R;
//在类中可以让另一个类,作为本类的成员
Point m_Center;//圆心
};
点的头文件
#pragma once //防止头文件重复包含
#include <iostream>
#include<string.h>
using namespace std;
//点类
class Point
{
public:
void setX(int x);
int getX();
void setY(int y);
int getY();
private:
int m_X;
int m_Y;
};
圆的源文件
#include"circle.h"
void Circle::setR(int r)
{
m_R = r;
}
int Circle::getR()
{
return m_R;
}
void Circle::setCenter(Point center)
{
m_Center = center;
}
Point Circle::getCenter()
{
return m_Center;
}
点的源文件
#include"point.h"
void Point:: setX(int x)
{
m_X = x;
}
int Point::getX()
{
return m_X;
}
void Point::setY(int y)
{
m_Y = y;
}
int Point::getY()
{
return m_Y;
}
主函数
#include"circle.h"
#include"point.h"
//判断点和圆的关系
void isInCircle(Circle& c, Point& p)
{
//计算两点之间距离的平方
int distance = (c.getCenter().getX() - p.getX())
* (c.getCenter().getX() - p.getX())
+ (c.getCenter().getY() - p.getY())
* (c.getCenter().getY() - p.getY());
//计算半径的平方
int rDistance = (c.getR()) * (c.getR());
//判断关系
if (distance == rDistance)
{
cout << "点在圆上" << endl;
}
else if(distance > rDistance)
{
cout << "点在圆外" << endl;
}
else
{
cout << "点在圆内" << endl;
}
}
int main()
{
//创建一个圆
Circle c;
c.setR(10);
Point center;
center.setX(10);
center.setY(0);
c.setCenter(center);
//创建一个点
Point p;
p.setX(10);
p.setY(10);
//判断关系
isInCircle(c, p);
system("pause");
return 0;
}
重点:
-
在一个类中定义的私有成员属性时,可以定义其他类的成员属性,即:嵌套使用
- //在类中可以让另一个类,作为本类的成员
Point m_Center;//圆心
- //在类中可以让另一个类,作为本类的成员
- #pragma once //防止头文件重复包含