C++ | 继承与组合 | A2实验五

  1. 类的组合

编写程序输出学生的基本信息。

要求:

(1)定义专业类Specialty,使其包含两个私有数据成员:专业名字sname和学分score。定义并实现该类的带参数的构造函数以及公有成员函(显示专业姓名和学分的函数showSp);

(2)定义学生类Student,使其包含三个私有数据成员:名字name、年龄 age、专业sp,定义并实现该类的构造函数以及公有成员函数(显示姓名、年龄和专业的函数showStu); 

(3)在main函数中对上述设计进行测试。

#include 
#include//可以进行+ = += > 运算,不行
using namespace std;
class Student;
class Specialty
{
public:
	Specialty(string sn="计算机", int sc=1);//构造函数属于公有成员,不能独立在外
	
	void showSp() { cout << "专业名字: " << sname << "   " << "学分:" << score<> age;
		cin >> name;
	}

private:
	int age;
	string name;
	Specialty spe1;//※以另一个类的对象作为数据成员,是类的组合


};
Specialty::Specialty(string sn, int sc)
{
	cin >> sn;
	sname = sn;
	cin >> sc;
	score = sc;
}


int main()
{
	Student t1;
	t1.showStu();
	system("pause");
	return 0;
}

ps:

1.如果不是要求specially类必须带参数,代码可以更简单点

2.组合:一个类的对象 做 另一个类的数据成员

3.注意常见的低级错误:

成员函数忘加() ;

构造函数没写在public声明下.

================================================================================================

2.类的继承

编写程序计算出球、圆柱和圆锥的表面积和体积。
要求:
(1)定义一个基类圆,至少含有一个数据成员:半径;
(2)定义基类的派生类:球、圆柱、圆锥,都含有求表面积和体积的成员函数和输出函数;
(3)定义主函数,求球、圆柱、圆锥的和体积。

#include 
using namespace std;

class Circle
{
public:
	Circle(double r = 0) {};//不加{}就编译失败,神秘
protected:
	double r;
	const double PI = 3.14;
};

class Qiu:public Circle
{	
public:
	
	Qiu()  
	{
		cout << "输入球的半径"<> r;
	}
	double volume() { return(4.0/3)*PI*pow(r, 3); }
	double area() { return (4.0) * PI*r*r; }
	void show() { cout << "球的 体积为:" << volume() << "   " << "表面积为:" << area() << endl; }
	

};

class Zui :public Circle
{
public:
	Zui()
	{
		cout << "分别输入圆锥的半径和母线长"<> r;
		cin >> l;//母线
	}
	double volume() { return (PI*r*r*l)/3 ; }
	double area() { return PI*r*l+PI*r*r; }
	void show() { cout << "圆锥的 体积为:" << volume() << "   " << "表面积为:" << area() << endl; }

private:
	double l;

};

class Zhu : public Circle
{
public:
	Zhu()
	{
		cout << "分别输入圆柱的半径和柱高"<> r;
		cin >> h;
	}
	double volume() { return h*PI*pow(r, 2); }
	double area()	{ return 2*PI*r*(h+ r); }
	void show() { cout << "圆柱的 体积为:" << volume() << "   " << "表面积为:" << area() << endl; }

private:
	double h;//柱高
};

int main()
{
	Qiu qiu1;
	Zui zui1;
	Zhu zhu1;
	qiu1.show();
	zui1.show();
	zhu1.show();
	
	system("pause");
	return 0;
}

 

你可能感兴趣的:(C++)