1.问题描述
定义一个基类BaseClass,从它派生出类DerivedClass,BaseClass有成员函数fn1()、fn2(),DerivedClass也有成员函数fn1()、fn2(),在主程序中定义一个DerivedClass的对象,分别用DerivedClass的对象以及BaseClass和DerivedClass的指针来调用fn1()、fn2()。
2.问题分析
(1)首先,我们可以得出基类为BaseClass,DerivedClass是基类的派生类,没有特别说明派生类的继承方式,因此我们默认为“公有继承(public)”。
(2)其次,基类BaseClass 和 派生类DerivedClass中均包含成员函数fn1()、fn2(),但是题目中没有指明fn1()、fn2()作用,因此我们默认为void fn1()和void fn2(),并输出任意一句提示信息。
(3)最后,题目要求在main中定义一个DerivedClass对象,分别用DerivedClass的对象以及BaseClass和DerivedClass的指针来调用fn1()、fn2()。因此定义DerivedClass对象d、指针D 和 BaseClass指针B,(名称可以自定),定义好如下所示:
DerivedClass d; //DerivedClass对象d
DerivedClass *D; //DerivedClass指针
BaseClass *B; //BaseClass指针
3.代码实现
//导入头文件
#include <iostream>
using namespace std;
class BaseClass{
public:
//构造函数
BaseClass(){ }
void fn1(){cout<<"BaseClass的fn1"<<endl;}
void fn2(){cout<<"BaseClass的fn2"<<endl;}
//析构函数
~BaseClass(){ }
};
class DerivedClass:public BaseClass{
public:
//构造函数
DerivedClass(){ }
void fn1(){ cout<<"DerivedClass的fn1"<<endl;}
void fn2(){cout<<"DerivedClass的fn2"<<endl;}
//析构函数
~DerivedClass(){ }
};
int main(){
DerivedClass d;//DerivedClass对象d
DerivedClass *D; //DerivedClass指针
BaseClass *B;//BaseClass指针
//对象调用
d.fn1();
d.fn2();
cout<<endl;//换行
//指针B调用
B->fn1();
B->fn2();
cout<<endl;//换行
//指针D调用
D->fn1();
D->fn2();
return 0;
}