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 + -
显示快捷键?