定义一个基类BaseClass,从它派生出类DerivedCalss,BaseClass有成员函数fn1(),fn2(),DerivedClass也有成员函数fn1(),fn2(),在主函数中声明一个DerivedCalss的对象,分别用DerivedCalss的对象以及BaseClass和DerivedCalss的指针来调用fn1(),fn2(),观察运行结果。
时间: 2024-03-18 19:38:52 浏览: 7
好的,这是一个简单的面向对象编程问题。以下是代码实现:
```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 的对象调用了它自己的 fn1 和 fn2 函数,而基类 BaseClass 的指针 p1 调用了基类的 fn1 和 fn2 函数,派生类 DerivedClass 的指针 p2 调用了重写后的 fn1 和 fn2 函数。这说明 C++ 支持多态的特性,能够根据对象或指针的类型来调用对应的函数。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)