主要练习 :在类中可以让另一个类作为本类的成员。
案例:判断点和圆的位置关系。
一、第一种直接方法
using namespace std; #include <iostream> class point { public: void setx(int x) { m_x = x; } int getx() { return m_x; } void sety(int y) { m_y = y; } int gety() { return m_y; } private: int m_x; int m_y; }; class circle { public: void setr(int r) { m_r = r; } int getr() { return m_r; } void setcenter(point center) { m_center = center; } point getcenter() { return m_center; } private: int m_r; point m_center; }; void compare(circle &c,point &p) { int disance= (c.getcenter().getx() - p.getx())* (c.getcenter().getx() - p.getx()) + (c.getcenter().gety() - p.gety()) * (c.getcenter().gety() - p.gety()); int rdisance=c.getr()* c.getr(); if (rdisance == disance) cout << "点在圆上"; else if (rdisance > disance) cout << "点在圆内"; else cout << "点在圆外"; } int main() { point p; circle c; c.setr(20);//半径长度 point senter; senter.setx(0);//圆的坐标 senter.sety(0); c.setcenter(senter); p.setx(10);//点的坐标 p.sety(10); compare(c,p); return 0; }
二、分开代码
源.cpp中的代码
using namespace std; #include <iostream> #include "point.h" #include "circle.h" void compare(circle &c,point &p) { int disance= (c.getcenter().getx() - p.getx())* (c.getcenter().getx() - p.getx()) + (c.getcenter().gety() - p.gety()) * (c.getcenter().gety() - p.gety()); int rdisance=c.getr()* c.getr(); if (rdisance == disance) cout << "点在圆上"; else if (rdisance > disance) cout << "点在圆内"; else cout << "点在圆外"; } int main() { point p; circle c; c.setr(20); point senter; senter.setx(0); senter.sety(0); c.setcenter(senter); p.setx(10); p.sety(10); compare(c,p); return 0; }
point.h中的代码
#pragma once #include <iostream> 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; };
point.cpp中的代码
#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; }
circle.h中的代码
#pragma once #include <iostream> using namespace std; #include "point.h" class circle { public: void setr(int r); int getr(); void setcenter(point center); point getcenter(); private: int m_r; point m_center; };
circle.cpp中的代码
#include "circle.h" #include "point.h" using namespace std; 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; }