定义一个基类BaseClass,从它派生出类DerivedClass,BaseClass 有成员函数fn1l()、fn2(),DerivedClass也有成员函数 fn1()、fn2(),在主程序中定义一个DerivedClass 的对象,分别用DerivedClass的对象以及BaseClass和 DerivedClass 的指针来调用fn1()、fn2(),观察运行结果。
时间: 2023-11-21 14:05:34 浏览: 70
好的,我来写一下这个程序的代码。首先是定义基类 BaseClass 和派生类 DerivedClass:
```C++
#include <iostream>
class BaseClass {
public:
void fn1() {
std::cout << "BaseClass::fn1()" << std::endl;
}
void fn2() {
std::cout << "BaseClass::fn2()" << std::endl;
}
};
class DerivedClass : public BaseClass {
public:
void fn1() {
std::cout << "DerivedClass::fn1()" << std::endl;
}
void fn2() {
std::cout << "DerivedClass::fn2()" << std::endl;
}
};
```
接下来是主程序部分:
```C++
int main() {
DerivedClass obj;
obj.fn1(); // 调用 DerivedClass::fn1()
obj.fn2(); // 调用 DerivedClass::fn2()
BaseClass* pBase = &obj;
pBase->fn1(); // 调用 BaseClass::fn1()
pBase->fn2(); // 调用 BaseClass::fn2()
DerivedClass* pDerived = &obj;
pDerived->fn1(); // 调用 DerivedClass::fn1()
pDerived->fn2(); // 调用 DerivedClass::fn2()
return 0;
}
```
在主程序中,我们先定义了一个 DerivedClass 的对象 obj,然后分别用对象和指针调用了 fn1() 和 fn2() 函数。其中,用 DerivedClass 对象调用 fn1() 和 fn2() 函数时,会分别调用 DerivedClass 中的同名函数;而用 BaseClass 和 DerivedClass 指针调用 fn1() 和 fn2() 函数时,会根据指针的类型来确定调用的函数,因为这两个函数都是虚函数,所以会根据对象的实际类型来调用相应的函数。因此,调用 BaseClass 指针的 fn1() 函数时,会调用 BaseClass 中的 fn1() 函数;调用 DerivedClass 指针的 fn1() 函数时,会调用 DerivedClass 中的 fn1() 函数;调用 BaseClass 指针和 DerivedClass 指针的 fn2() 函数时,都会调用 DerivedClass 中的 fn2() 函数。