定义一个基类BaseClass,从它派生出类DerivedCalss,BaseClass有成员函数fn1(),fn2(),DerivedClass也有成员函数fn1(),fn2(),在主函数中声明一个DerivedCalss的对象,分别用DerivedCalss的对象以及BaseClass和DerivedCalss的指针来调用fn1(),fn2(),观察运行结果。
时间: 2024-02-28 17:57:13 浏览: 10
好的,以下是对你的问题的回答:
```cpp
#include <iostream>
using namespace std;
class BaseClass {
public:
void fn1() {
cout << "BaseClass::fn1()" << endl;
}
void fn2() {
cout << "BaseClass::fn2()" << endl;
}
};
class DerivedClass : public BaseClass {
public:
void fn1() {
cout << "DerivedClass::fn1()" << endl;
}
void fn2() {
cout << "DerivedClass::fn2()" << endl;
}
};
int main() {
DerivedClass derivedObj;
BaseClass* pBase = &derivedObj;
DerivedClass* pDerived = &derivedObj;
derivedObj.fn1();
derivedObj.fn2();
pBase->fn1();
pBase->fn2();
pDerived->fn1();
pDerived->fn2();
return 0;
}
```
输出结果:
```
DerivedClass::fn1()
DerivedClass::fn2()
BaseClass::fn1()
BaseClass::fn2()
DerivedClass::fn1()
DerivedClass::fn2()
```
从输出结果可以看出,当使用DerivedClass的对象来调用成员函数时,会优先调用DerivedClass中的同名成员函数;当使用指向BaseClass的指针来调用成员函数时,会优先调用BaseClass中的成员函数;当使用指向DerivedClass的指针来调用成员函数时,同样会优先调用DerivedClass中的同名成员函数。这说明在继承关系中,派生类中的同名成员函数会覆盖基类中的同名成员函数。