C++实验源代码
1) 下面是“平面上点”类的定义: class CPoint { private: int x, y; static int nCount; // nCount用于保存点的个数 public: CPoint(int px=0, int py=0); CPoint(CPoint&); ~CPoint(); int GetX(); int GetY(); void SetX(int); void SetY(int); void ShowPoint(); }; 请完成该类中各成员函数的定义。 2) 下面是“平面上线段”类的定义: class CLine { private: CPoint pt1, pt2; //pt1和pt2分别代表该线段的起点和终点 public: CLine(); CLine(int x1,int y1,int x2,int y2); CLine(CPoint p1,CPoint p2); double Distance(); //计算该线段长度的成员函数 void ShowLine(); }; 请完成该类中各成员函数的定义。并利用VC调试工具观察含有组合关系类的构造函数和析构函数的执行 情况。 3) 下面是“空间中点”类的定义: class CThreePoint:public CPoint { private: int z; public: CThreePoint(); CThreePoint(int, int, int); int GetZ(); void SetZ(int pz); virtual void ShowPoint(); }; 请完成该类中各成员函数的定义。并利用VC调试工具观察含有继承关系类的构造函数和析构函数的执行情况。分析为什么要把ShowPoint()函数设置为虚函数?有什么作用?请在main()函数中做测试。 4) 定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?把age改为保护成员变量呢?编程试试看。 5) 定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。 6) 参考题目2中Cline类的编写,编写一个空间中线段CThreeLine类。并在该类中观察构造函数的执行顺序。(选做)