C++继承关系

对于继承关系
// 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)//默认构造
{
}
Point::Point(double xval, double yval) : x(xval), y(yval)//普通构造
{
}
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是继承而来的成员,由于是保护类成员,可以直接使用,若果是私有成员,则必须使用共有函数借口进行访问
	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;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值