};
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 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<<\担任课程:\