建立一个圆类和点类,求出一个点和圆的关系。

CirclePoint.cpp7月22日上课记录:

题目:建立一个圆类和点类,求出一个点和圆的关系。

Point.h文件

#ifndef _POINT_H
#define _POINT_H

class Point
{
private:
 int ind_x;
 int ind_y;
public:
 void Set_Point(int x, int y);
 int GetDistance(Point &p);
};
#endif

Point.cpp

#include "Point.h"

void Point::Set_Point(int x, int y)
{
 ind_x = x;
 ind_y = y;
}

int Point::GetDistance(Point &p)
{
 return ((this->ind_x-p.ind_x)*(this->ind_x-p.ind_x)+(this->ind_y-p.ind_y)*(this->ind_y-p.ind_y));
}

Circle.h

#ifndef _CIRCLE_H
#define _CIRCLE_H

#include "Point.h"

class Circle
{
private:
 Point m_p;                                        //对象作为成员变量
 int m_r;
public:
 void Set_Circle(int x, int  y, int r);
 bool judge(Point &p);    //用来判断点的关系
};

#endif

CirclePoint.cpp

#include "Circle.h"

void Circle::Set_Circle(int x, int  y, int r)
{
 m_p.Set_Point(x,y);
 m_r = r;
}


bool Circle::judge(Point &p)
{
 if(m_r*m_r >= (p.GetDistance(m_p))*(p.GetDistance(m_p)))
 {
  return false;
 }
 else
  return true;
}

main.cpp

#include "Circle.h"
#include <iostream>

using namespace std;
 
int main()
{
 Point p;
 p.Set_Point(10,10);
 
 Circle c;
 c.Set_Circle(2,2,2);
 
 if(c.judge(p))
 {
  cout << "圆外" << endl;
 }
 else
 {
  cout << "圆内" << endl;
 }
 return 0;
}

 

 

 

当类中没有定义构造函数时,编译器默认提供一个无参数的构造函数,并且函数体为空;

一旦类中定义了拷贝构造函数,则编译器不再提供无参数的函数了。

拷贝构造函数:

所有的类都有一个默认的拷贝构造函数,但只是做简单的赋值,为浅拷贝;浅拷贝会导致的问题是:会出现析构时,同一个空间被释放两次,产生错误;因此可以自己写拷贝构造函数的深拷贝,另开辟一个空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值