C++课程作业作业之Ponit2D 和 Ponit3D类的创建

老师课上布置的作业

要求如下:

(1)设计类Point2D,包含两个私有权限的double类型数据成员x和y,分别表示2D平面上点的x、 y坐标数值;( class Point2D )
(2)在Point2D类中包含两个参数的构造函数,构造函数的两个形参分别用以为数据成员x和y初始化;参数x、参数y的默认参数值分别为1.0、1.0;(3)在Point2D类中添加一个拷贝构造函数;
(4) Point2D类中包含一个用以输出数据成员x和y的print()成员函数,完成其具体的实现;
(5)完成Point2D类的公有派生类Point3D类,在派生类中新增一个私有权限的double类型数据成员z,表示点的z坐标数值;
(6)写出Poit3D类的具有3个参数的构造函数,3个参数的默认值依次为1.0、1.0、1.0,前2个参数初始化基类成员,后1个参数初始化新增加的数据成员。
(7)写出Point3D类的具有2个参数的构造函数,第1个参数为Point2D基类对象的引用,用以初始化继承的基类成员。后1个参数的默认值为2.0,用以初始化新增加的数据成
员z。
(8)以成员函数的形式重载^操作符,以实现double类型数据与自定义数据类型的相乘操作。例如Point3D p1(2.0,4.0.8.0)p2 p2=p1*9.6; (p1的x、y、z分别与9.6相乘)

这里是代码:

#include<stdio.h>
#include<iostream>

class Point2D {
public:
	Point2D(double a = 1.0, double b = 2.0) :x(a), y(b) {
		//printf("基类创建成功!");
	};
	Point2D(const Point2D& p) { x = p.x, y = p.y; };
	void Print2D() {
		printf("x坐标:%lf y坐标:%lf", x, y);
	}
	double getx() { return x; }
	double gety() { return y; }
protected:
	double x, y;
private:
};

class Point3D :public Point2D {
public:
	Point3D(double a = 1.0, double b = 1.0, double c = 1.0) : z(c) {
		x = a;
		y = b;
		//printf("子类创建成功!");
	};  
	Point3D(Point2D &a,  double c = 2.0) : z(c) {
		x = a.getx();
		y = a.gety();
		//printf("子类创建成功!");
	};
	Point3D operator* (double a) {
		Point3D P3(x, y, z);
		P3.x *= a;
		P3.y *= a;
		P3.z *= a;
		return P3;
	}
	void Print3D() {
		Print2D();
		printf(" z坐标:%lf", z);
	}
protected:
private:
	double z;
};

int main() {
	std::ios::sync_with_stdio(false);
	Point3D node(1, 2, 3);
	node = node * 3;
	node.Print3D();
	return 0;
}


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值