职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 3314|回复: 3

【C++程序设计实验】类的继承和派生

[复制链接]
已经来了吗 发表于 2011-9-27 09:40 | 显示全部楼层 |阅读模式
29790130406ae5c3a9018e8e.jpg
1、 理解继承的含义,掌握派生类的定义方法和实现;
2、 理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;
3、 理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员;
4、 理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。
实验内容 编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班级和成绩,教师数据有编号、姓名、职称和部门。 要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师类数据操作类teacher的基类。 编写一个程序计算出球、圆柱和圆锥的表面积和体积。
要求:
i. 定义一个基类圆,至少含有一个数据成员半径;
ii. 定义基类的派生类球、圆柱、圆锥,都含有求表面积和体积的成员函数和输出函数。
iii. 定义主函数,求球、圆柱、圆锥的和体积。 程序/结果#include <iostream>
using namespace std;
class person
{public:
void set_information( ); //公用成员函数
void show_information( ); //公用成员函数
private: //数据成员为私有
int number;
char name[30];
};
class Student: public person
{
public:
void show_information_1( )
{
cout<<endl;
cout<<"请输入学生信息: "<<endl;
cout<<endl;
cout<<"请输入班级: "<<endl;
cin>>cls;
cout<<"请输入成绩: "<<endl;
cin>>gra;
cout<<endl;
cout<<"学生附加信息:"<<endl;
cout<<" 班级: "<<cls<<endl; //引用派生类的私有成员,正确
cout<<" 成绩: "<<gra<<endl;
cout<<endl;
} //引用派生类的私有成员,正确
private:
int cls;
int gra;
};
class Teacher: public person
{
public:
void show_information_2( )
{
cout<<endl;
cout<<"请输入教师信息: "<<endl;
cout<<endl;
cout<<"请输入职称: "<<endl;
cin>>cls2;
cout<<"请输入部门: "<<endl;
cin>>gra2;
cout<<endl;
cout<<"教师附加信息:"<<endl;
cout<<" 职称: "<<cls2<<endl; //引用派生类的私有成员,正确
cout<<" 部门: "<<gra2<<endl;
cout<<endl;
} //引用派生类的私有成员,正确
private:
char cls2[30];
char gra2[30];
};
int main( )
{
Student t1;
Teacher t2; //定义对象t1
t1.set_information( ); //调用对象t1的成员函数set_time,向t1的数据成员输入数据
t1.show_information_1();
t2.set_information( ); //调用对象t1的成员函数set_time,向t1的数据成员输入数据
t2.show_information_2();
cout<<endl;
return 0;
}
void person::set_information( ) //在类外定义set_time函数
{
cout<<endl;
cout<<"请输入基本信息: "<<endl;
cout<<endl;
cout<<" "<<"姓名:";
cin>>name;
cout<<" "<<"号码:";
cin>>number;
}
void person::show_information( ) //在类外定义show_time函数
{
cout<<endl;
cout<<"人员信息: "<<endl;
cout<<endl;
cout<<"姓名:"<<name<<" "<<"号码: "<<number<<endl;
}
3c2c4bfb76701e4c6c22eb43.jpg #include <iostream>
using namespace std;
class Ctriangle
{
public:
void set_R( ); //公用成员函数
void show_R( ); //公用成员函数
private: //数据成员为私有
int r;
int h;
};
class Student: private Ctriangle
{
public:
void show_information_1( )
{
cout<<endl;
cout<<"请输入圆柱底面半径: "<<endl;
cout<<endl;
cin>>r;
cout<<"请输入圆柱的高: "<<endl;
cin>>h;
cout<<endl;
cout<<"底面半径为"<<r<<"高为"<<h<<"的圆柱:"<<endl;
cout<<" 面积: "<<2*3.14*r*r+2*3.14*r*h<<endl; //引用派生类的私有成员,正确
cout<<" 体积: "<<3.14*r*r*h<<endl; //引用派生类的私有成员,正确
cout<<endl;
} //引用派生类的私有成员,正确
private:
int r;
int h;
};
class Teacher: private Ctriangle
{
public:
void show_information_2( )
{
cout<<endl;
cout<<"请输入圆锥底面半径: "<<endl;
cout<<endl;
cin>>r;
cout<<"请输入圆锥的高: "<<endl;
cin>>h;
cout<<endl;
cout<<"底面半径为"<<r<<"高为"<<h<<"的圆锥:"<<endl;
cout<<" 面积: "<<3.14*r*h+3.14*r*r<<endl; //引用派生类的私有成员,正确
cout<<" 体积: "<<3.14*r*r*h/3<<endl; //引用派生类的私有成员,正确
cout<<endl;
} //引用派生类的私有成员,正确
private:
int r;
int h;
};
int main( )
{
Ctriangle t;
t.set_R();
t.show_R();
Student t1;
Teacher t2; //定义对象t1
t1.show_information_1();
t2.show_information_2();
cout<<endl;
return 0;
}
void Ctriangle::set_R( ) //在类外定义set_time函数
{
cout<<endl;
cout<<"请输入球体半径: "<<endl;
cout<<endl;
cout<<" "<<"球体半径:";
cin>>r;
}
void Ctriangle::show_R( ) //在类外定义show_time函数
{
cout<<endl;
cout<<"半径为"<<r<<"的球体:"<<endl;
cout<<endl;
cout<<"表面积:"<<4*3.14*r*r<<endl;
cout<<"体积:"<<(4/3)*3.14*r*r*r<<endl;
}
30ecd5ef749c166cadafd554.jpg


很想看看你啦 发表于 2012-1-12 22:54 | 显示全部楼层
非常感谢,我学习了。
奔跑着 发表于 2012-8-14 16:56 | 显示全部楼层
程序员,你的代码值多少钱?http://blog.sina.com.cn/s/blog_5ce5700e01016g98.html

www.apple-a.com 发表于 2012-12-7 16:23 | 显示全部楼层
、 理解继承的含义,掌握派生类的定义方法和实现;
2、 理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;
3、 理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员;
4、 理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。
实验内容 编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班级和成绩,教师数据有编号、姓名、职称和部门。 要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师类数据操作类teacher的基类。 编写一个程序计算出球、圆柱和圆锥的表面积和体积。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-24 12:14 , Processed in 0.138599 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表