#include<iostream> using namespace std; class B{ public: virtual void f1(double x) {cout<<"B::f2(double)"<<2*x<<endl;} void f2(double x) {cout<<"B::f2(double)"<<2*x<<endl;} void f3(double x) {cout<<"B::f3(double)"<<3*x<<endl;} }; class D:public B{ public: int x; virtual void f1(double) {cout<<"D::f1(double)"<<x<<endl;} void f2(double) {cout<<"D::f1(double)"<<2*x<<endl;} void f3(double) {cout<<"D::f1(double)"<<3*x<<endl;} }; int main() { D d; B *pb=&d; D *pd=&d; pb->f1(1.23); pd->f1(1.23); pb->f2(1.23); pb->f3(1.23); pd->f3(3.14); return 0; }
时间: 2023-10-30 10:00:59 浏览: 39
这段代码是一个简单的 C++ 多态示例,包含一个基类 B 和一个派生类 D。B 中有三个函数 f1、f2、f3,其中 f1 是虚函数。D 继承自 B 并添加了一个成员变量 x,同时重写了 f1 和 f2 函数。
在 main 函数中,创建了一个 D 对象 d,以 B 指针指向该对象,以及以 D 指针指向该对象。然后分别调用了 pb->f1(1.23)、pd->f1(1.23)、pb->f2(1.23)、pb->f3(1.23)、pd->f3(3.14) 函数。
由于 f1 是虚函数,所以在调用 pb->f1(1.23) 和 pd->f1(1.23) 时,会调用 D 中重写的 f1 函数;而在调用 pb->f2(1.23) 和 pd->f2(1.23) 时,由于 f2 不是虚函数,所以会根据指针类型来决定调用哪个函数,即 pb->f2(1.23) 会调用 B 中的 f2 函数,pd->f2(1.23) 会调用 D 中的 f2 函数;最后调用 pd->f3(3.14) 时,由于 D 中没有重写 f3 函数,所以会调用 B 中的 f3 函数。输出结果如下:
D::f1(double)0
D::f1(double)0
B::f2(double)2.46
B::f3(double)3.69
B::f3(double)9.42
相关问题
#include<iostream> #include<cstdio> using namespace std;是什么意思
#include<iostream> #include<cstdio> using namespace std; 是C++中的预处理指令,用于引入头文件和命名空间。
1. #include<iostream> 是引入iostream头文件,其中包含了输入输出流的定义,例如cout和cin等。
2. #include<cstdio> 是引入cstdio头文件,其中包含了C语言标准输入输出函数的定义,例如printf和scanf等。
3. using namespace std; 是使用std命名空间,std是C++标准库的命名空间,其中包含了很多常用的函数和类。
这些预处理指令的作用是为了在程序中能够使用输入输出流和标准库函数,使得程序更加方便和简洁。
#include<iostream>using namespace std;
这是一个C++的代码片段,它包含了iostream头文件和使用了命名空间std。iostream头文件提供了输入输出流的功能,而using namespace std;语句则是为了方便使用std命名空间中的函数和对象,避免每次都需要写std::。
以下是一个简单的示例代码,展示了如何使用iostream头文件和命名空间std来输出一句话:
```cpp
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
```
这段代码会输出"Hello, World!",endl是一个特殊的控制符,用于在输出流中插入一个换行符。
相关推荐
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.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)
![](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)