示例说明:设计一个Point类,在定义一个Circle类,Circle类对象的圆心属性是Point类对象。要求:
- 根据需要,合理地设计描述Point类和Circle类的属性和方法
- 合理地设计类成员的访问控制方式
- 考虑如何初始化Point类对象和Circle类对象
- 考虑如何输出Circle类对象的属性信息
- 用主函数测试类
- 要求使用多文件实现程序
类名 | Point |
---|---|
属性X坐标 | private: int m_nX; |
属性Y坐标 | private:int m_nY; |
方法构造函数 | public: Point(int nX,int nY); |
方法析构函数 | public:~Point(); |
友元Circle类 | friend class Circle; |
类名 | Circle |
---|---|
属性圆心 | private:Point m_pointCenter |
属性半径 | private:int m_nR |
方法构造函数 | public:Circle (int nX,int nY,int nR); |
方法析构函数 | public:~Circle(); |
方法显示属性信息 | public:void displayInfo(); |
//Point.h
class Point
{
private:
int m_nX;
int m_nY;
public:
Point(int nX,int nY);
~Point();
friend class Circle;
};
//Point.cpp
#include "Point.h"
#include <iostream>
uisng namespace std;
Point::Point(int nX,int nY)
{
m_nX=nX;
m_nY=nY;
cout<<"Point类构造函数被调用!"<<endl;
}
Point::~Point()
{
cout<<"Point类析构函数被调用!"<<endl;
}
//Circle.h
#include "Point.h"
class Circle
{
private:
Point m_pointCenter; //对象成员
int m_nR;
public:
Circle(int nX,int nY,int nR);
~Circle();
void displayInfo();
}
//Circle.cpp
#include "Circle.h"
#include <iostream>
uisng namespace std;
Circle::Circle(int nX,int nY,int nR)
{
m_nR=nR;
cout<<"Circle类构造函数被调用!"<<endl;
}
Circle::Circle()
{
cout<<"Circle类构造函数被调用!"<<endl;
}
void Circle::displayInfo()
{
cout<<"圆心为:("<<m_pointCenter.m_nX<<","<<m_pointCenter.m_nY<<")"<<endl;
cout<<"半径为:("<<m_nR<<endl;
}
testCircle.cpp
#include "Circle.h"
int main()
{
Circle c(10,15,5);
c.displayInfo();
return 0;
}
运行结果:
Point类构造函数被调用!
Circle类构造函数被调用!
圆心为:(10,15)
半径为:5
Circe类析构函数被调用!
Point类析构函数被调用!