【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;
}