1、 1 一、实验目的 掌握继承与派生的概念。 掌握派生类的声明与构成。 掌握派生类的继承方式和访问控制权限。 掌握派生类构造函数和析构函数的使用方法。 掌握基类与派生类的类型转换。 二、实验内容和步骤 1)程序填空:填入相应的内容,使得程序可以正常运行。 1. #include using namespace std; class A protected: char name80; public: A(const char *n ) strcpy(name,n); ; class B: public A public: B( _ ) _ void PrintName() cout using n
2、amespace std; class Base public: void fun() cout #include using namespace std; 3 class Person string name; string sex; string id; string phone; public: void output(); void input(); Person(string name=“,string sex=“,string id=“,string phone=“); ; void Person:output() coutname; coutsex; coutid; coutph
3、one; Person:Person(string name,string sex,string id,string phone) this-name=name; this-sex=sex; this-id=id; this-phone=phone; ; class Student:public Person string stu_no; string major; public: void input(); 4 void output(); Student(string name=“,string sex=“,string id=“,string phone=“,string stu_no=
4、“,string major=“); ; void Student:input() Person:input(); coutstu_no; coutmajor; void Student:output() Person:output(); coutstu_no=stu_no; this-major=major; class Teacher:public Person string tea_no; string prof; string dept; public: void input(); void output(); Teacher(string name=“,string sex=“,st
5、ring id=“,string phone=“,string tea_no=“,string prof=“,string dept=“); ; void Teacher:input() Person:input(); couttea_no; coutprof; coutdept; 5 void Teacher:output() Person:output(); couttea_no=tea_no; this-prof=prof; this-dept=dept; int main( ) Student s1,s2(“张三 “,“男 “,“310100111111110000“,“1331234
6、5678“,“20100000“,“电自 “); Teacher t; s2.output(); s1.input(); s1.output(); t.input(); t.output(); return 0; 运行结果 (直接截取结果图) 2 声明一个哺乳动物 Mammal类 ,含有 weight(出生重量,克)数据成员和 out_info成员函数(输出出生重量信息) ,再由此派生出狗 Dog类, 新增 color(颜色)数据成员,并重定义 out_info成员函数(该函数中调用基类的out_info成员函数以完成对基类派生得到的那些属性的输出,然后再输出新增的数据成员信息),要求基类和派
7、生类分别带有带参构造函数、不带参构造函数 、析构函数。在主函数中分别定义使用了默认构造函数的 Dog类 对象 和带参构造函数的 Dog类对象 ,观察基类与派生类的构造函数与析构函数的调用顺序。 程序源代码 (注意添加注释) #include #include using namespace std; class Mammal 6 protected: int weight; public: Mammal() weight=-1; cout using namespace std; class Shape double area; public: Shape(double a=0):area(a
8、) 8 double GetArea() return area; ; class Rectangle:public Shape double a,b; public: Rectangle(double aa=0,double bb=0):Shape(aa*bb),a(aa),b(bb) void Calc_Perimeter() cout“周长为: “2*(a+b)endl; ; class Circle:public Shape double r; public: Circle(double bj=0):Shape(3.14*bj*bj),r(bj) void Calc_Perimeter
9、() cout“周长为: “6.28*rendl; ; class Square:public Rectangle double d; public: Square(double bian=0):Rectangle(bian,bian),d(bian) ; int main() 9 Square s(3); cout“边长为 3 的正方形: “; cout“面积为: “s.GetArea()endl; s.Calc_Perimeter(); Rectangle r(2,5); cout“边长为 2 和 5 的长方形: “; cout“面积为: “r.GetArea()endl; r.Calc_Perimeter(); Circle c(3); cout“半径为 3 的圆形: “; cout“面积为: “c.GetArea()endl; c.Calc_Perimeter(); return 0;