p396 12.1 类的进一步讨论.cpp
来自「谭浩强 《C++ 程序设计》第三版的部分课后练习题源码」· C++ 代码 · 共 113 行
CPP
113 行
#include<iostream>
using namespace std;
class Point
{
private:
float x;
float y;
public:
Point(float a=0,float b=0):x(a),y(b){}
friend istream & operator>>(istream &input,Point &p);
friend ostream & operator<<(ostream &output,Point &p);
};
istream & operator>>(istream &input,Point &p)
{
cout<<"please input the x,y: ";
cin>>p.x>>p.y;
return input;
}
ostream & operator<<(ostream &output,Point &p)
{
cout<<"the x="<<p.x<<" the y="<<p.y<<endl;
return output;
}
//
class Circle:public Point
{
private:
float r;
public:
Circle(float x=0,float y=0,float r=0):Point(x,y),r(r){}
friend istream & operator>>(istream &input,Circle &c);
friend ostream & operator<<(ostream &output,Circle &c);
};
istream & operator>>(istream &input,Circle &c)
{
Point &p=c; //用基类的引用(指针也可以)指向派生类的对象,输入派生类中基类的成员
cin>>p;
cout<<"please input the r: ";
cin>>c.r;
return input;
}
ostream & operator<<(ostream &output,Circle &c)
{
Point &p=c; //用基类的引用(指针也可以)指向派生类的对象,输出派生类中基类的成员
cout<<p;
cout<<"the r="<<c.r<<endl;
return output;
}
//
class Cyli:public Circle
{
private:
float height;
public:
Cyli(float a=0,float b=0,float c=0,float d=0):Circle(a,b,c),height(d){}
friend istream & operator>>(istream &input,Cyli &c);
friend ostream & operator<<(ostream &output,Cyli &c);
};
istream & operator>>(istream &input,Cyli &c)
{
Circle &p=c;
cin>>p;
cout<<"please input the height: ";
cin>>c.height;
return input;
}
ostream & operator<<(ostream &output,Cyli &c)
{
Circle &p=c;
cout<<p;
cout<<"the height="<<c.height<<endl;
return output;
}
int main()
{
Point p;
cin>>p;
cout<<p;
Circle c;
cin>>c;
cout<<c;
Cyli cy;
cin>>cy;
cout<<cy;
system("pause");
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?