学习笔记《计算机程序设计C++》第12周基础练习

1形状类虚函数(10分)
题目内容:

定义SHAPE类,表示几何图形,x,y位置坐标为其私有数据成员,double;成员函数有:默认构造设置位置坐标为(0,0);两参数构造函数设置x,y;set()函数设置x,y坐标;area()返回面积,虚函数,返回0。成员函数均为公有。

定义派生类——圆类CIRCLE,继承上面的SHAPE类,增加数据成员radius表示半径,double,私有。成员函数有:默认构造函数,设置圆心半径均为0;三参数构造函数初始化圆心和半径;set()设置圆心和半径;area()返回圆的面积,pai取3.14。

编写主程序,(1)定义基类对象sp,初始化位置为(1,2);定义CIRCLE类对象c,初始化位置、半径为(3,4,5);定义SHAPE指针p,定义SHAPE类型的c的引用sp2。p指向sp对象,计算并显示面积;p指向派生类对象c,计算并显示面积;通过引用sp2计算并显示面积。主函数如下:

输入:无

输出:固定值

0

78.5

78.5

样例1输入:

样例1输出:

0

78.5

78.5

【注意】本题的结果不是问题,关键是使用虚函数,并且观察和理解基类指针指向派生类对象时访问的是哪个成员函数;通过基类对派生类的引用访问的是哪个成员函数。下面提供了完整源程序,完成后,试试在类中去掉virtual看运行结果。

参考程序如下:

时间限制:500ms内存限制:32000kb
C++

#include<iostream>
#include<cmath>
using namespace std;
class SHAPE {
   
	double x, y;
public:SHAPE(int a, int b) {
   
	x = a, y = b;
}
	   SHAPE() {
    x = 0, y = 0; }
	   void set(int a, int b) {
   
		   x = a, y = b;
	   }
	   virtual double area() {
   
		   return 0;
	   }
};
class CIRCLE:public SHAPE {
   
	double radius=0;
public:
	CIRCLE() {
   
		radius = 0;
	  SHAPE(0, 0);
	}
	CIRCLE(int a, int b, int r) {
   
	radius = r;
	SHAPE(a, b);
}
	void set(int a, int b, int r) {
   
		SHAPE::set(a, b);
		radius = r;
	}
	double area() {
   
		return 3.14*radius*radius;
	}
};
int main() {
   
	SHAPE sp(1
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值