C++实验三

实验要求:

1.定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程尝试,并在本次报告的心得中说明对该问题的理解。

2.定义一个基类BaseClass,有整型变量Number,构造其派生类DerivedClass(其中派生类有一基类BaseClass对象的私有成员,即                ),观察构造函数和析构函数的执行情况(在构造函数和析构函数中用cout输出提示信息)。

3.定义一个车(vehicle)基类,具有Maxspeed、Weight等成员,run、stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNun)等属性。从bicycle和motorcar派生出摩托车(motorbicycle)类,在继承过程中,注意将适当的类设置为虚基类。在主函数中调用vehicle类的run和stop函数,编程完成各个类的定义。

题目一

编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示:

  error C2248 : ‘age’ : cannot access private member declared in class ‘Animal’

  error C2248 : ‘age’ : cannot access private member declared in class ‘Animal’

   把age改为公有成员变量后重新编译就可以了。程序名:lab7_1.cpp。

#include<iostream>
using  namespace  std;
class Animal{
 public:int age;
};
class dog:public Animal{
public:void SetAge(int n){age=n;};
int GetAge(){return age;};
};
int  main()
{
        dog  d;
 d.SetAge(1);
        cout<<d.GetAge()<<endl;
        return  0;
}

题目二

编写程序定义一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名:lab7_2.cpp。用debug功能跟踪程序lab7_2的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。

 #include <iostream>

using namespace std;
class BaseClass{
public:BaseClass(int x){Number =x;cout<<"Construct BaseClass"<<endl;};
BaseClass(){cout<<"Construct BaseClass"<<endl;};
~BaseClass(){cout<< "Destruct BaseClass"<<endl;};
int Number  ;};
class DerivedClass:public BaseClass{
public:
    DerivedClass(int x,int y): a(x){ Number=y; cout<<"Construct DerivedClass"<<endl;};
~DerivedClass(){cout<<"Destruct DerivedClass"<<endl;};
private: BaseClass a;
};
int  main()
{
        DerivedClass  obj(1,2);
        return  0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值