一个典型的例子
2011-11-23 15:44
197 查看
/*这是一个乘上启下的例子。一方面它是有关继承和运算符重载内容的综合应用的例子,通过这个例子可以进一步融会贯通前面所学的内容,另一方面又是作为讨论多态性的一个基础例子。*/ #include <iostream> using namespace std; //声明类Point class Point {public: Point(float=0,float=0); void setPoint(float,float); float getX() const {return x;} float getY() const {return y;} friend ostream & operator<<(ostream &,const Point &); protected: float x,y; }; //定义Point类的成员函数 //Point的构造函数 Point::Point(float a,float b) {x=a;y=b;} //设置x和y的坐标值 void Point::setPoint(float a,float b) {x=a;y=b;} //输出点的坐标 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(new):"<<p<<endl; return 0; } Ch12-1-2(vc) #include <iostream.h> //using namespace std; //声明类Point class Point {public: Point(float=0,float=0); void setPoint(float,float); float getX() const {return x;} float getY() const {return y;} friend ostream & operator<<(ostream &,const Point &); protected: float x,y; }; //定义Point类的成员函数 //Point的构造函数 Point::Point(float a,float b) {x=a;y=b;} //设置x和y的坐标值 void Point::setPoint(float a,float b) {x=a;y=b;} //输出点的坐标 ostream & operator<<(ostream &output,const Point &p) {output<<"["<<p.x<<","<<p.y<<"]"<<endl; return output; } class Circle:public Point {public: Circle(float x=0,float y=0,float r=0); void setRadius(float); float getRadius() const; float area () const; friend ostream &operator<<(ostream &,const Circle &); private: float radius; }; Circle::Circle(float a,float b,float r):Point(a,b),radius(r){} void Circle::setRadius(float r) {radius=r;} float Circle::getRadius() const {return radius;} float Circle::area() const {return 3.14159*radius*radius;} ostream &operator<<(ostream &output,const Circle &c) {output<<"Center=["<<c.x<<","<<c.y<<"], Radius="<<c.radius<<", area="<<c.area()<<endl; return output; } int main() {Circle c(3.5,6.4,5.2); cout<<"original circle:\nx="<<c.getX()<<", y="<<c.getY()<<", r="<<c.getRadius() <<", area="<<c.area()<<endl; c.setRadius(7.5); c.setPoint(5,5); cout<<"new circle:\n"<<c; Point &pRef=c; cout<<"pRef:"<<pRef; return 0; } Ch12-1-2 #include <iostream> using namespace std; //声明类Point class Point {public: Point(float=0,float=0); void setPoint(float,float); float getX() const {return x;} float getY() const {return y;} friend ostream & operator<<(ostream &,const Point &); protected: float x,y; }; //定义Point类的成员函数 //Point的构造函数 Point::Point(float a,float b) {x=a;y=b;} //设置x和y的坐标值 void Point::setPoint(float a,float b) {x=a;y=b;} //输出点的坐标 ostream & operator<<(ostream &output,const Point &p) {output<<"["<<p.x<<","<<p.y<<"]"<<endl; return output; } class Circle:public Point {public: Circle(float x=0,float y=0,float r=0); void setRadius(float); float getRadius() const; float area () const; friend ostream &operator<<(ostream &,const Circle &); private: float radius; }; Circle::Circle(float a,float b,float r):Point(a,b),radius(r){} void Circle::setRadius(float r) {radius=r;} float Circle::getRadius() const {return radius;} float Circle::area() const {return 3.14159*radius*radius;} ostream &operator<<(ostream &output,const Circle &c) {output<<"Center=["<<c.x<<","<<c.y<<"], Radius="<<c.radius<<", area="<<c.area()<<endl; return output; } int main() {Circle c(3.5,6.4,5.2); cout<<"original circle:\nx="<<c.getX()<<", y="<<c.getY()<<", r="<<c.getRadius() <<", area="<<c.area()<<endl; c.setRadius(7.5); c.setPoint(5,5); cout<<"new circle:\n"<<c; Point &pRef=c; cout<<"pRef:"<<pRef; return 0; } Ch12-1-3(vc) #include <iostream.h> class Point {public: Point(float=0,float=0); void setPoint(float,float); float getX() const {return x;} float getY() const {return y;} friend ostream & operator<<(ostream &,const Point &); protected: float x,y; }; Point::Point(float a,float b) {x=a;y=b;} void Point::setPoint(float a,float b) {x=a;y=b;} ostream & operator<<(ostream &output,const Point &p) {output<<"["<<p.x<<","<<p.y<<"]"<<endl; return output; } class Circle:public Point {public: Circle(float x=0,float y=0,float r=0); void setRadius(float); float getRadius() const; float area () const; friend ostream &operator<<(ostream &,const Circle &); protected: float radius; }; Circle::Circle(float a,float b,float r):Point(a,b),radius(r){} void Circle::setRadius(float r) {radius=r;} float Circle::getRadius() const {return radius;} float Circle::area() const {return 3.14159*radius*radius;} ostream &operator<<(ostream &output,const Circle &c) {output<<"Center=["<<c.x<<","<<c.y<<"], r="<<c.radius<<", area="<<c.area()<<endl; return output; } class Cylinder:public Circle {public: Cylinder (float x=0,float y=0,float r=0,float h=0); void setHeight(float); float getHeight() const; float area() const; float volume() const; friend ostream& operator<<(ostream&,const Cylinder&); protected: float height; }; Cylinder::Cylinder(float a,float b,float r,float h) :Circle(a,b,r),height(h){} void Cylinder::setHeight(float h){height=h;} float Cylinder::getHeight() const {return height;} float Cylinder::area() const { return 2*Circle::area()+2*3.14159*radius*height;} float Cylinder::volume() const {return Circle::area()*height;} ostream &operator<<(ostream &output,const Cylinder& cy) {output<<"Center=["<<cy.x<<","<<cy.y<<"], r="<<cy.radius<<", h="<<cy.height <<"\narea="<<cy.area()<<", volume="<<cy.volume()<<endl; return output; } int main() {Cylinder cy1(3.5,6.4,5.2,10); cout<<"\noriginal cylinder:\nx="<<cy1.getX()<<", y="<<cy1.getY()<<", r=" <<cy1.getRadius()<<", h="<<cy1.getHeight()<<"\narea="<<cy1.area() <<", volume="<<cy1.volume()<<endl; cy1.setHeight(15); cy1.setRadius(7.5); cy1.setPoint(5,5); cout<<"\nnew cylinder:\n"<<cy1; Point &pRef=cy1; cout<<"\npRef as a point:"<<pRef; Circle &cRef=cy1; cout<<"\ncRef as a Circle:"<<cRef; return 0; } Ch12-1-3 #include <iostream> using namespace std; class Point {public: Point(float=0,float=0); void setPoint(float,float); float getX() const {return x;} float getY() const {return y;} friend ostream & operator<<(ostream &,const Point &); protected: float x,y; }; Point::Point(float a,float b) {x=a;y=b;} void Point::setPoint(float a,float b) {x=a;y=b;} ostream & operator<<(ostream &output,const Point &p) {output<<"["<<p.x<<","<<p.y<<"]"<<endl; return output; } class Circle:public Point {public: Circle(float x=0,float y=0,float r=0); void setRadius(float); float getRadius() const; float area () const; friend ostream &operator<<(ostream &,const Circle &); protected: float radius; }; Circle::Circle(float a,float b,float r):Point(a,b),radius(r){} void Circle::setRadius(float r) {radius=r;} float Circle::getRadius() const {return radius;} float Circle::area() const {return 3.14159*radius*radius;} ostream &operator<<(ostream &output,const Circle &c) {output<<"Center=["<<c.x<<","<<c.y<<"], r="<<c.radius<<", area="<<c.area()<<endl; return output; } class Cylinder:public Circle {public: Cylinder (float x=0,float y=0,float r=0,float h=0); void setHeight(float); float getHeight() const; float area() const; float volume() const; friend ostream& operator<<(ostream&,const Cylinder&); protected: float height; }; Cylinder::Cylinder(float a,float b,float r,float h) :Circle(a,b,r),height(h){} void Cylinder::setHeight(float h){height=h;} float Cylinder::getHeight() const {return height;} float Cylinder::area() const { return 2*Circle::area()+2*3.14159*radius*height;} float Cylinder::volume() const {return Circle::area()*height;} ostream &operator<<(ostream &output,const Cylinder& cy) {output<<"Center=["<<cy.x<<","<<cy.y<<"], r="<<cy.radius<<", h="<<cy.height <<"\narea="<<cy.area()<<", volume="<<cy.volume()<<endl; return output; } int main() {Cylinder cy1(3.5,6.4,5.2,10); cout<<"\noriginal cylinder:\nx="<<cy1.getX()<<", y="<<cy1.getY()<<", r=" <<cy1.getRadius()<<", h="<<cy1.getHeight()<<"\narea="<<cy1.area() <<", volume="<<cy1.volume()<<endl; cy1.setHeight(15); cy1.setRadius(7.5); cy1.setPoint(5,5); cout<<"\nnew cylinder:\n"<<cy1; Point &pRef=cy1; cout<<"\npRef as a point:"<<pRef; Circle &cRef=cy1; cout<<"\ncRef as a Circle:"<<cRef; return 0; }
相关文章推荐
- tomcat、servlet、jsp的一个典型例子
- 一个典型的例子解决常见的高级Windows程序设计问题
- 一个典型的例子
- 用递归法:设计算法求解汉诺塔问题,并编程实现。 (1) Hanoi(汉诺)塔问题分析 这是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座 A,B,C
- DataTemplate——数据模板的一个典型例子
- 从一个例子看看一个典型的混乱是如何形成
- WebDriver+TestNG的一个典型例子
- 经常会遇见java.lang.NullPointerExcetion 的错误,典型的一个错误例子,供大家参考
- 一个典型的双缓冲的例子
- 一个典型的Hibernate实体操作例子
- 许多游戏公司都是先布置办公室,让开发团队在里面协同工作,刻苦努力多年创造出新知识产权 (IP),然后将产品交给零售店和直接分销网站出售,Steam 就是一个典型的例子。但愿能获得利润,这样他们就可以再
- JavaScript中,函数也是一个变量,即var XXX。典型例子
- 一个datagrid中嵌入checkBox典型的例子
- HttpServlet一个典型的例子-没有乱码
- Ajax的一个典型引用的例子
- 多态性与虚拟函数一个典型的例子第一步
- 一个运算符重载的典型例子(重载复数的加减乘除)
- 一个黑洞的典型例子
- 一个典型的例子理解JavaScript作用域以及变量提升
- 线程同步1 ------ 互斥锁 ------一个更加典型的例子