定义一个基类BaseClass,有公有成员函数fn1(),fn2(),函数内打印出类名及函数名,有私有数据成员int i,从它派生出类DerivedClass,有公有成员函数fn1(),函数内打印出类名及函数名,私有数据成员int j,在主函数中分别用BaseClass及Derivedclass类的指针去调用fn1(),fn2,观察运行结果。要求: (1)注意派生类的构造函数须写正确; (2)分析通过指针调用成员函数的运行结果。
时间: 2024-03-25 21:38:38 浏览: 118
cg2_基类BaseClass派生出类_noddedc1c_
5星 · 资源好评率100%
代码如下:
```C++
#include <iostream>
using namespace std;
class BaseClass {
public:
void fn1() {
cout << "BaseClass::fn1()" << endl;
}
void fn2() {
cout << "BaseClass::fn2()" << endl;
}
private:
int i;
};
class DerivedClass : public BaseClass {
public:
void fn1() {
cout << "DerivedClass::fn1()" << endl;
}
private:
int j;
};
int main() {
BaseClass *pb = new BaseClass;
pb->fn1(); // BaseClass::fn1()
pb->fn2(); // BaseClass::fn2()
DerivedClass *pd = new DerivedClass;
pd->fn1(); // DerivedClass::fn1()
pd->fn2(); // BaseClass::fn2()
delete pb;
delete pd;
return 0;
}
```
运行结果为:
```
BaseClass::fn1()
BaseClass::fn2()
DerivedClass::fn1()
BaseClass::fn2()
```
通过指针调用成员函数时,若派生类中有重写基类的成员函数,则会调用派生类中的成员函数,否则调用基类的成员函数。由于派生类并没有重写基类的fn2()函数,因此调用的是基类的fn2()函数。
阅读全文