定义一个基类BaseClass,从它派生出DerivedClass, BaseClass有成员函数fn1()、fn2(),DerivedClass也有成员 函数fn1()、fn2(),在主函数中声明一个DerivedClass的对 象,分别 用DerivedClass的对象以及BaseClass和 DerivedClass的指针来调用fn1()、fn2(),观察运行结果。
时间: 2023-11-14 07:06:06 浏览: 63
好的,以下是代码实现:
```c++
#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 obj;
BaseClass *p1 = &obj;
DerivedClass *p2 = &obj;
obj.fn1();
obj.fn2();
p1->fn1();
p1->fn2();
p2->fn1();
p2->fn2();
return 0;
}
```
运行结果如下:
```
DerivedClass::fn1()
DerivedClass::fn2()
BaseClass::fn1()
BaseClass::fn2()
DerivedClass::fn1()
DerivedClass::fn2()
```
从结果可以看出,当直接使用DerivedClass的对象调用函数时,会调用DerivedClass中的函数;当使用BaseClass的指针来调用函数时,会调用BaseClass中的函数;当使用DerivedClass的指针来调用函数时,会先在DerivedClass中寻找对应的函数,如果没有则会去BaseClass中寻找。这是因为DerivedClass继承了BaseClass的成员函数,但是在DerivedClass中对这些函数进行了重载。