#include <iostream> const double PI=3.14; using namespace std; class Figure //定义基类 { public: Figure(){}; virtual double area() const =0; //定义为纯虚函数 }; class Circle : public Figure //定义派生类,公有继承方式 { public: Circle(double myr){R=myr;} virtual double area() const {return PI*R*R;}//定义为虚函数 protected: double R; }; class Rectangle : public Figure //定义派生类,公有继承方式 { public: Rectangle (double myl,double myw){L=myl;W=myw;} virtual double area() const {return L*W;} //定义为虚函数 private: double L,W; }; void func(Figure &p) //形参为基类的引用 { cout<<p.area()<<endl; } double main() { Circle c(3.0); // Circle派生类对象 cout<<"Area of circle is "; func(c); Rectangle rec(4.0,5.0); // Rectangle派生类对象 cout<<"Area of rectangle is "; func(rec); return 0; }
时间: 2024-02-15 19:28:08 浏览: 21
这段代码是一个简单的面向对象的程序,实现了多态的概念。其中定义了一个基类Figure,它是一个抽象类,其中有一个纯虚函数area()。同时还定义了两个派生类,一个是Circle,一个是Rectangle,它们都继承了Figure类,并且都实现了area()函数。在main函数中,分别创建了Circle和Rectangle对象,并通过func函数调用了它们的area()函数,实现了多态的效果。在这个过程中,我们不需要知道对象的具体类型,只需要知道它们都是Figure类的派生类即可。
相关问题
#include <iostream> #include<algorithm> #include<cmath> #include <queue> using namespace std;
#include <iostream>:这是C++标准库中的头文件,用于输入输出流操作,包括cin、cout等。
#include<algorithm>:这是C++标准库中的头文件,用于提供各种算法操作,如排序、查找等。
#include<cmath>:这是C++标准库中的头文件,用于提供数学函数操作,如绝对值、平方根等。
#include <queue>:这是C++标准库中的头文件,用于提供队列操作,包括入队、出队等。
using namespace std;:这是C++的命名空间声明,表示使用std命名空间,可以直接使用std中的函数和对象。
#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++标准库的命名空间,其中包含了很多常用的函数和类。
这些预处理指令的作用是为了在程序中能够使用输入输出流和标准库函数,使得程序更加方便和简洁。