C++类和对象的继承和派生
来源:互联网 发布:阿里云 直播 编辑:程序博客网 时间:2024/06/05 03:42
1 实验内容及目的
l 实验目的
理解和掌握C++类和对象的继承和派生。
l 实验内容
创建一个MyPoint类来建模二维空间中的一个点。MyPoint类包含两个属性x和y,表示x轴和y轴坐标,还包含x和y的获取器函数,及返回两点之间距离的函数。创建一个名为3DPoint的类,来建模三维空间中的一个点。将3DPoint设计为MyPoint的一个派生类,包含如下额外属性:
(1)一个名为z的数据域,表示z轴坐标。
(2)一个无参构造函数,创建一个坐标为(0,0,0)的点。
(3)一个带参数的构造函数,按指定坐标创建一个点。
(4)z的获取器函数。
(5)覆盖distance函数,返回三维空间中两点之间的距离。
(6)一个名为getPerimeter()的函数,返回矩形的周长。
2 实验步骤
(1)实现类
l MyPoint类
l TdPoint类
(2)编写测试程序
创建两个点,坐标为(0,0,0)和(10,30,25.5),并输出两点之间的距离。
3 源代码
头文件:
#ifndef DPOINT_H
#define DPOINT_H
#include "MyPoint.h"
class ThreeDPoint : public MyPoint{
private:
double z;
public:
ThreeDPoint();
ThreeDPoint(double x,double y,double z);
double getZ();
double distance(ThreeDPoint p);
double getPerimeter();
};
#endif
源文件:
#include <stdio.h>
#include <iostream>
#include "3DPoint.h"
#include <math.h>
using namespace std;
ThreeDPoint::ThreeDPoint(){
z = 0;
}
ThreeDPoint::ThreeDPoint(double a,double b,double c):MyPoint(a,b){
z = c;
// cout << z << endl;
}
double ThreeDPoint::getZ(){
return z;
}
double ThreeDPoint::distance(ThreeDPoint p){
//cout << p.getX() << p.getY() << p.getZ() << endl;
return sqrt((this->getX()-p.getX()*(this->getX()-p.getX())+(this->getY()-p.getY())*(this->getY()-p.getY())+(this->getZ()-p.getZ())*(this->getZ()-p.getZ())));
//3D距离
}
double ThreeDPoint::getPerimeter(){
return 0.3;
//周长
}
测试文件:
#include <stdio.h>
#include <iostream>
#include "3DPoint.h"
using namespace std;
void main(){
ThreeDPoint point1;
ThreeDPoint point2(10,30,25.5);
cout << point1.distance(point2) << endl;
}
4 遇到的问题与分析
1. 继承基类。例如:头文件中的class TdPoint:public MyPoint和功能函数中的TdPoint::TdPoint() : MyPoint(0, 0)。
分析:需要以此格式触发函数继承的功能,以实现对基类相关函数的调用。
2. 派生函数。在编写代码过程主要是遇到编写格式的问题。
分析:在头文件声明中需要使用相同函数名称,在功能函数实现具体功能的时候亦需要使用相同的函数名称及相应格式。
5 实验体会
通过该实验,基本上熟悉了C++中类的继承和派生的相关知识及代码的编写规则。同时也发现了自身在编码上所存在的问题,而问题主要是由于对C++语言编写格式的不熟悉所造成的,但经过课堂的学习和从实践中的尝试,问题最终都得到了较好的解决。此外,在这过程中也有向同学请教和上网查阅相关资料的经历,这一学习方法在接下来的实验中也发挥了相当大的作用。
- C语言类的继承和派生
- [C++]继承和派生类
- C++----继承和派生
- 【C++】继承和派生
- C++类和对象的继承和派生
- C++类和对象的继承和派生
- C++类和对象的继承和派生
- 类的继承和派生
- 类的继承和派生
- 类的继承和派生
- OBJ-C类的继承和派生学习笔记
- 继承和派生类
- C++__继承和派生
- C++类的继承和派生
- 作业5.18 类的继承和派生
- C++ 类的派生和继承
- C++类的继承和派生
- C++类的继承和派生
- 一句话真理
- Oracle Net Manager配置本地数据库连接,测试时卡死解决方法之一
- Java 多线程中Condition的使用
- BroadcastReceiver动态注册和静态注册哪个先执行
- 【leetcode】 Permutation Sequence
- C++类和对象的继承和派生
- 用python来为自己办事-抓取网页内容
- 掌握C++运算符重载
- 创建Python程序
- Java作用域public、protected、default、private
- Jump Game
- 【简单题】-POJ-3802-Cubist Artwork
- hello hibernate
- oracle rac常用命令