點類派生出圓類

來源:互聯網
上載者:User
/* * Copyright (c) 2013, 煙台大學電腦學院                     * All rights reserved.                     * 檔案名稱:test.cpp                     * 作者:邱學偉                    * 完成日期:2013 年 5 月 15 日                     * 版本號碼:v1.0                                        * 輸入描述:無                     * 問題描述:                  * 程式輸出:* 問題分析:                    * 演算法設計:略                     */         
/*(1)先建立一個Point(點)類,包含資料成員x,y(座標點);    (2)以Point為基類,派生出一個Circle(圓)類,增加資料成員 (半徑);    (3)再以Circle類為直接基類,派生出一個Cylinder(圓柱體)類,再增加資料成員h(高)。     要求編寫程式,設計出各類中基本的成員函數(包括建構函式、解構函式、修改資料成員和擷取資料成員的公用介面、用於輸出的重載運算子“<<”函數等),使之能用於處理以上類對象,最後求出圓格柱體的表面積、體積並輸出。*/#include <iostream>#include <cmath>using namespace std;class Point{    public:    Point(double x1,double y1):x(x1),y(y1){}    void SetPoint(double x2,double y2);    double getx(){return x;}    double gety(){return y;}    friend ostream & operator<<(ostream &,const Point &);    protected:    double x,y;};void Point::SetPoint(double x2,double y2){    x=x2;    y=y2;} ostream & operator<<(ostream &output,const Point &P){    output<<"("<<P.x<<","<<P.y<<")"<<endl;    return output;}int main(){    Point p(3.5,6.4);    cout<<"x="<<p.getx()<<",y="<<p.gety()<<endl;    p.SetPoint(8.5,6.8);    cout<<"p="<<p<<endl;    return 0;}

/*(1)先建立一個Point(點)類,包含資料成員x,y(座標點);    (2)以Point為基類,派生出一個Circle(圓)類,增加資料成員 (半徑);    (3)再以Circle類為直接基類,派生出一個Cylinder(圓柱體)類,再增加資料成員h(高)。     要求編寫程式,設計出各類中基本的成員函數(包括建構函式、解構函式、修改資料成員和擷取資料成員的公用介面、用於輸出的重載運算子“<<”函數等),使之能用於處理以上類對象,最後求出圓格柱體的表面積、體積並輸出。*/#include <iostream>#include <cmath>using namespace std;class Point      //點類{    public:    Point(double x1,double y1):x(x1),y(y1){} //建構函式    void SetPoint(double x2,double y2);    double getx(){return x;}    double gety(){return y;}    friend ostream & operator<<(ostream &,const Point &);//友元函數重載“<<”    protected:  //受保護的資料    double x,y;};void Point::SetPoint(double x2,double y2){    x=x2;    y=y2;} ostream & operator<<(ostream &output,const Point &P){    output<<"("<<P.x<<","<<P.y<<")"<<endl;    return output;}//以Point為基類,派生出一個Circle(圓)類,增加資料成員 (半徑radius);class Circle:public Point{    public:    Circle(double x=0,double y=0,double r=0);//建構函式    void SetRadius(double);//設定半徑    double GetRadius()const {return r;}//提取半徑數值    double area()const;//求圓的半徑    friend ostream & operator<<(ostream &,const Circle &);//友元函數重載“<<”    protected:    double r;};Circle::Circle(double a,double b,const double r1):Point(a,b),r(r1){}void Circle::SetRadius(double r0){    r=r0;}double Circle::area()const{    return 3.14*r*r;}ostream & operator<<(ostream &output,const Circle &c){    output<<"center: ("<<c.x<<","<<c.y<<")  r="<<c.r<<"  area="<<c.area()<<endl;    return output;}int main(){    Circle c(3.5,6.4,5.2);    cout<<"circle:  x="<<c.getx()<<",  y="<<c.gety()<<",  r="<<c.GetRadius()<<",  area="<<c.area()<<endl;    c.SetPoint(5,5);    cout<<"circle:"<<c<<endl;    return 0;}/*(1)先建立一個Point(點)類,包含資料成員x,y(座標點);    (2)以Point為基類,派生出一個Circle(圓)類,增加資料成員 (半徑);    (3)再以Circle類為直接基類,派生出一個Cylinder(圓柱體)類,再增加資料成員h(高)。     要求編寫程式,設計出各類中基本的成員函數(包括建構函式、解構函式、修改資料成員和擷取資料成員的公用介面、用於輸出的重載運算子“<<”函數等),使之能用於處理以上類對象,最後求出圓格柱體的表面積、體積並輸出。*/#include <iostream>#include <cmath>using namespace std;class Point      //點類{    public:    Point(double x1,double y1):x(x1),y(y1){} //建構函式    void SetPoint(double x2,double y2);    double getx(){return x;}    double gety(){return y;}    friend ostream & operator<<(ostream &,const Point &);//友元函數重載“<<”    protected:  //受保護的資料    double x,y;};void Point::SetPoint(double x2,double y2){    x=x2;    y=y2;} ostream & operator<<(ostream &output,const Point &P){    output<<"("<<P.x<<","<<P.y<<")"<<endl;    return output;}//以Point為基類,派生出一個Circle(圓)類,增加資料成員 (半徑radius);class Circle:public Point{    public:    Circle(double x=0,double y=0,double r=0);//建構函式    void SetRadius(double);//設定半徑    double GetRadius()const {return r;}//提取半徑數值    double area()const;//求圓的半徑    friend ostream & operator<<(ostream &,const Circle &);//友元函數重載“<<”    protected:    double r;};Circle::Circle(double a,double b,const double r1):Point(a,b),r(r1){}void Circle::SetRadius(double r0){    r=r0;}double Circle::area()const{    return 3.14*r*r;}ostream & operator<<(ostream &output,const Circle &c){    output<<"center: ("<<c.x<<","<<c.y<<")  r="<<c.r<<"  area="<<c.area()<<endl;    return output;}int main(){    Circle c(3.5,6.4,5.2);    cout<<"circle:  x="<<c.getx()<<",  y="<<c.gety()<<",  r="<<c.GetRadius()<<",  area="<<c.area()<<endl;    c.SetPoint(5,5);    cout<<"circle:"<<c<<endl;    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.