C++继承关系
對(duì)于繼承關(guān)系
// Inherit_Point.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
using namespace std;/*****************************Point**************************************/
class Point
{friend ostream&operator<<(ostream&, Point&);
public:Point();Point(double xval, double yval);~Point();protected:double x;double y;};
Point::Point():x(0.0),y(0.0)//默認(rèn)構(gòu)造
{
}
Point::Point(double xval, double yval) : x(xval), y(yval)//普通構(gòu)造
{
}
Point::~Point()
{
}
ostream& operator<<(ostream& os, Point& apoint)
{os << "Point :x:y " << apoint.x << ", " << apoint.y << "\n";return os;
}/********************************Circle*********************************/
class Circle:public Point
{friend ostream& operator<<(ostream&, Circle&);public:Circle();Circle(double r, double xval, double yval);~Circle();double area() { return (3.1415926*radius*radius); }protected:double radius;
};Circle::Circle():Point(),radius(0.0)
{
}
Circle::Circle(double r, double xval, double yval) : Point(xval, yval), radius(r)
{}
Circle::~Circle()
{
}
ostream& operator<<(ostream& os, Circle& aCircle)
{os << "Circle:radius: " << aCircle.radius;os << aCircle.x << "\n";//x,y是繼承而來的成員,由于是保護(hù)類成員,可以直接使用,若果是私有成員,則必須使用共有函數(shù)借口進(jìn)行訪問os << aCircle.y << "\n";return os;
}/************************************Cylinder*****************************************/
class Cylinder:public Circle
{friend ostream& operator<<(ostream&, Cylinder&);
public:Cylinder();Cylinder(double hv, double rv, double xv, double yv);double area() { return 2 * Circle::area() + 2 * 3.1415926*radius*radius; }~Cylinder();private:
protected:double height;
};Cylinder::Cylinder():Circle(),height(0.0)
{
}
Cylinder::Cylinder(double hv, double rv, double xv, double yv) : Circle(xv, yv, rv), height(hv)
{
}
Cylinder::~Cylinder()
{
}
ostream& operator<<(ostream& os, Cylinder& acylinder)
{os << "cylinder dimensions: ";os << "x: " << acylinder.x;os << ", y: " << acylinder.y;os << " , radius: " << acylinder.radius;os << ", height: " << acylinder.height << endl;return os;
}/*****************************************main()**********************************************/
int main()
{Point p(2.0, 3.0);Circle c(7.0, 6.0, 5.0);Cylinder cyl(10.0, 11.0, 12.0, 13.0);cout << p;cout << c;cout << "area circle: " << c.area() << endl;cout << cyl;cout << "area cylinder: " << cyl.area() << endl;cout << "aera cylinder base is: "<< cyl.Circle::area() << endl;system("pause");return 0;
}
總結(jié)
- 上一篇: C++中类的组合和继承关系
- 下一篇: C++之虚析构函数