C++面向对象实验报告 下载本文

};

float weight;

float totalWeight(Book& abook,Ruler& aruler) {

return abook.weight+aruler.weight; }

int main() {

float w;

cout<<\cin>>w; Book b(w);

cout<<\cin>>w; Ruler r(w);

cout<<\cout<

return 0; }

实验4 继承与派生

一、实验目的和要求

(1)掌握派生类的定义方法和派生类构造函数的定义方法。

(2)掌握不同继承方式的情况下,基类成员在派生类中的访问权限。 (3)掌握在多继承方式的情况下,构造函数与析构函数的调用时机与顺序。

二、实验内容和原理

(1)实验指导书P86 1 (2)实验指导书P89 3

三、实验环境

联想计算机,Windows XP操作系统,Visual C++ 6.0

四、算法描述及实验步骤

(1)输入源程序。

(2)检查程序有无错误(包括语法错误和逻辑错误),有则改之。

(3)编译和连接,仔细分析编译信息,如有错误应找出原因并改正之。

(4)运行程序,分析结果,在原有程序得出正确结果后,修改程序,将其改写为在类模板外定义,再按第(3)步骤运行。

(5)将调试好的程序保存在自己的用户目录中,文件名自定。

五、调试过程

在第一题的基类A中没有’return’ a导致错误,修改后运行成功。

六、实验结果

(1)

(2)

七、总结

(1)掌握了派生类的定义方法和派生类构造函数的定义方法。

(2)了解了不同继承方式的情况下,基类成员在派生类中的访问权限。

(3)懂得了在多继承方式的情况下,构造函数与析构函数的调用时机与顺序。

八、附录:

代码如下:

(1) //sy4_1.cpp

#include

using namespace std; class A { public:

void seta(int i){a=i;} int geta(){return a;}

public: int a; };

class B:public A

{ public: void setb(int i){b=i;}

int getb(){return b;} void show(){cout<<\ public: int b; }; int main() { B bb;

bb.seta(6); bb.setb(3);

bb.show();

cout<<\ cout<<\ cout<<\ cout<<\ return 0; }

(2)//sy4_2.cpp

#include #include using namespace std; class Person {public:

Person(string n,string s,int a) {name=n;sex=s;age=a;} void display() {

cout<<\姓名:\cout<<\性别:\cout<<\年龄:\

} protected:

};

class Teacher:virtual public Person

{public:

Teacher(string n,string s,int a,string t,string l) :Person(n,s,a) {title=t; lesson=l; }

string name; string sex; int age;

void display() {Person::display(); cout<<\职称:\

}

protected:

string title; string lesson; };

class Student:virtual public Person {public:

cout<<\担任课程:\