定义一个基类Bas.eClass,从它派生出DerixedClass ,BaseClass有成员函数fn10、fn20,DerixedClass也有成员函数fn10、fn20,在主函数中声明一个DerixedClass的对象,分别用DerixedClasS的对象以及BaseClasS和DexixedClas的指针来调用fn10、fn20,观察运行结果。v
时间: 2023-11-06 08:04:04 浏览: 71
好的,以下是代码实现:
```c++
#include<iostream>
using namespace std;
class BaseClass {
public:
void fn10() {
cout << "BaseClass::fn10()" << endl;
}
void fn20() {
cout << "BaseClass::fn20()" << endl;
}
};
class DerixedClass : public BaseClass {
public:
void fn10() {
cout << "DerixedClass::fn10()" << endl;
}
void fn20() {
cout << "DerixedClass::fn20()" << endl;
}
};
int main() {
DerixedClass derivedObj;
BaseClass* pBase = &derivedObj;
DerixedClass* pDerived = &derivedObj;
derivedObj.fn10();
derivedObj.fn20();
pBase->fn10();
pBase->fn20();
pDerived->fn10();
pDerived->fn20();
return 0;
}
```
输出结果如下:
```
DerixedClass::fn10()
DerixedClass::fn20()
BaseClass::fn10()
BaseClass::fn20()
DerixedClass::fn10()
DerixedClass::fn20()
```
可以看到,无论是通过 `derivedObj` 对象还是 `pBase` 和 `pDerived` 指针调用成员函数,都能正确地调用到对应类中的函数。这是因为 `DerixedClass` 继承自 `BaseClass`,所以它包含了 `BaseClass` 中的所有成员函数,包括 `fn10` 和 `fn20`。而在 `DerixedClass` 中重新定义了这两个函数,所以它们会覆盖掉基类中的对应函数。因此,当通过 `derivedObj` 对象调用成员函数时,会直接调用 `DerixedClass` 中的函数;当通过 `pBase` 指针调用成员函数时,调用的是基类中的函数;当通过 `pDerived` 指针调用成员函数时,调用的是派生类中的函数。
阅读全文