【C++】实验五:虚基类和纯虚函数

【C++】实验系列主要是为了总结代码和知识点,方便复习。
以下代码都是自己敲出来的,在VS上可以运行。

细节: /*********************************************/
// 第五次实验 虚基类和纯虚函数.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。

#include <iostream>
#define _USE_MATH_DEFINES //使用到常量π
#include <math.h>
using namespace std;

父类
class JHTX {
public:
	double r;
	JHTX() { r = 0; }
	JHTX(double a) { r = a; }
	~JHTX() {}
	//面积
	virtual double area()          /*********************************************/
	{
		cout << "JHTX area called." << endl;
		return 0;
	}
	//周长
	virtual double perimeter()
	{
		cout << "JHTX perimeter called." << endl;
		return 0;
	}
	//体积
	virtual double volume()
	{
		cout<<"JHTX volume called." << endl;
		return 0;
	}
};

//圆类
class circular :public JHTX {
public:
	circular() { r = 0; }
	circular(double a) { r = a; }
	~circular() {}
	
	double area()
	{ 
		cout << "circular area called." << endl;
		return r * r*M_PI; 
	}
	double perimeter() 
	{ 
		cout << "circular perimeter called." << endl;
		return 2 * r*M_PI;
	}
};

///矩形类
class rectangular:public JHTX{
private:
	double a, b;
public:
	rectangular() { a = b = 0; }
	rectangular(double a, double b) :a(a), b(b){}
	~rectangular(){}
	
	double area()
	{
		cout << "rectangular area called." << endl;
		return a*b;
	}
	double perimeter()
	{
		cout << "rectangular perimeter called." << endl;
		return 2 * a*b;
	}
};

球类
class sphere:public circular{
public:
	sphere() { r = 0; }
	sphere(double a) { r = a; }
	~sphere(){}
	double area()
	{
		cout << "sphere area called." << endl;
		return 4*M_PI*r*r;
	}
	double perimeter()
	{
		cout << "sphere perimeter called." << endl;
		return 0;
	}
	double volume()  
	{
		cout<< "sphere volume called." << endl;
		return (4*M_PI*r*r*r)/3;
	}
};

///圆柱类
class cylinder:public JHTX{
private:
	double h;
public:
	cylinder() { r=0 ,h = 0; }
	cylinder(double a,double b)
	{
		r = a;
		h = b;
	}
    /*cylinder() {  r = h = 0; }
	cylinder(double a, double b): r(a), h(b){}
	~cylinder() {}*/
	double area()
	{
		cout << "cylinder area called." << endl;
		return 2 * M_PI*r*(h+r);
	}
	double perimeter()
	{
		cout << "cylinder perimeter called." << endl;
		return 0;
	}
	double volume()
	{
		cout << "cylinder volume called." << endl;
		return h * M_PI*r*r;
	}
	
};
int main()
{
	JHTX a1;
	JHTX a2(1);
    circular b1;
	circular b2(2);
	rectangular c1;
	rectangular c2(2,3);
	sphere d1;
	sphere d2(3);
	cylinder e1;
	cylinder e2(2, 3);
	/*********************************************/
	/*********************************************/
	JHTX *a_a1 = &a1;
	JHTX &a_a2 = a2;
	
	JHTX *a_b1 = &b1;
	JHTX &a_b2 = b2;
	
	JHTX *a_c1 = &c1;
	JHTX &a_c2 = c2;

	JHTX *a_d1 = &d1;
	JHTX &a_d2 = d2;
	
	JHTX *a_e1 = &e1;
	JHTX &a_e2 = e2;

	
	cout << a_a1->area() << endl;
	cout << a_a2.perimeter() << endl;

	cout << a_a1->area() << endl;
	cout << a_a2.perimeter() << endl;

	cout << a_b1->area() << endl;
	cout << a_b2.perimeter() << endl;

	cout << a_c1->area() << endl;
	cout << a_c2.perimeter() << endl;

	cout << a_d1->area() << endl;
	cout << a_d2.volume() << endl;

	cout << a_e1->area() << endl;
	cout << a_e2.volume() << endl;

	return 0;
}











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值