定义一个基类BaseClass,从它派生出类DerivedCalss,BaseClass有成员函数fn1(),fn2(),DerivedClass也有成员函数fn1(),fn2(),在主函数中声明一个DerivedCalss的对象,分别用DerivedCalss的对象以及BaseClass和DerivedCalss的指针来调用fn1(),fn2(),观察运行结果。
时间: 2024-03-24 16:36:27 浏览: 11
好的,我来解答您的问题。
首先,我们需要定义一个基类BaseClass,它有两个成员函数fn1()和fn2():
```c++
class BaseClass {
public:
void fn1() {
std::cout << "BaseClass's fn1()" << std::endl;
}
void fn2() {
std::cout << "BaseClass's fn2()" << std::endl;
}
};
```
然后,我们定义一个派生类DerivedClass,它也有两个成员函数fn1()和fn2():
```c++
class DerivedClass : public BaseClass {
public:
void fn1() {
std::cout << "DerivedClass's fn1()" << std::endl;
}
void fn2() {
std::cout << "DerivedClass's fn2()" << std::endl;
}
};
```
接下来在主函数中声明一个DerivedClass的对象,并分别用DerivedClass的对象以及BaseClass和DerivedClass的指针来调用fn1()和fn2():
```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's fn1()
DerivedClass's fn2()
BaseClass's fn1()
BaseClass's fn2()
DerivedClass's fn1()
DerivedClass's fn2()
```
我们可以看到,当我们调用DerivedClass对象的成员函数时,会优先调用DerivedClass中的同名函数;当我们使用基类指针调用成员函数时,会根据指针类型调用对应的函数,即BaseClass的函数或DerivedClass的函数(如果有重写);当我们使用派生类指针调用成员函数时,会直接调用DerivedClass中的函数。