📄 01.cpp
字号:
#include<iostream>
using namespace std;
// 声明抽象基类 shape
template<typename T>
class Shape
{
public:
virtual T Area() = 0;
};
//一个shape基类模板派生出多个模板类
template<typename T>
class Circle : public Shape<T>
{
public:
Circle(T radius) : radius_(radius);
T Area(){ return T(3.14) * radius_*radius_; }
private:
T radius_;
};
template<class T>
ostream &operartor<<(ostream &output,Circle<T> &c)
{ output<<"["<<c.x<<","<<c.y<<"],r="<<c.radius<<",area="<<c.area()<<endl;
return output;}
istream &operator>>(istream &input,Circle<T> &c)
{
cout<<"请输入圆的圆心和半径:";
input>>"[">>c.x>>",">>c.y>>"],r=">>c.radius;
return input;}
float setcircle() const{cin>>[x,y]>>radius;}
class dimetric:public circle<float> //正方形是circle类的公用派生类
{public:
dimetric(float r=0);
float setdimetric() const{cin>>radius;}
float area() const; //计算正方形的面积
friend ostream &operator<<(ostream &,const demetric &); //重载运算符"<<"
friend istream &operator>>(istream &,const demetric &); //重载运算符">>"
}
//定义dimetric类成员函数
dimetric::dimetric(float r):radius(r)()
//重载运算符">>","<<"
float dimetric::area() const{return radius*radius;)
ostream &operator<<(ostream &output,const demetric &cz)
{output<<"radius="<<cz.radius<<","<<"area="<<cz.area()<<endl;
return output;}
istream &operator>>(istream &input,const demetric &cz)
{ cout<<"请输入正方形的边长:";
input>>"r=">>cz.radius;
return input;}
//定义主函数
int main()
{cout<<"---------------------计算圆和正方形的面积----------------"
circle<float>c1;
cin>>c1;
cout<<c1;
demetric c2;
cin>>c2;
cout<<c2;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -