/* * 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;}