Point类派生出Circle类

程序代码

#include <iostream>

using namespace std;

class Point//点类
{
public:
    //使用初始化表初始化点类
    Point(double a = 0, double b = 0):x(a), y(b){}
    double getX();
    double getY();

    //重载<<实现点的坐标的输出
    friend ostream& operator<<(ostream &output, Point &p);

protected:
    double x;//横坐标
    double y;//纵坐标
};

//得到x的值
double Point::getX()
{
    return x;
}

//得到y的值
double Point::getY()
{
    return y;
}

//重载<<实现点的坐标的输出
ostream& operator<<(ostream &output, Point &p)
{
    output<<"("<<p.x<<","<<p.y<<")"<<endl;

    return output;
}

//Point派生出Circle类
class Circle : public Point
{
public:
    //构造函数(初始化半径的两个端点)
    Circle(double a, double b, double r);
    void SetRadius();//设置圆的半径
    double GetRadius();//得到圆的半径
    double getArea();//计算圆的面积

    //重载<<实现输出圆的面积
    friend ostream& operator<<(ostream &output, Circle &c);

protected:
    double r;//圆的半径
};

//构造函数(使用初始化表初始化Circle类)
Circle::Circle(double a, double b, double r):Point(a, b),r(r){}

//设置圆的半径
void Circle::SetRadius()
{
    this->r = r;
}

//得到圆的半径
double Circle::GetRadius()
{
    return r;
}

//计算圆的面积
double Circle::getArea()
{
    //计算圆的面积
    double s = 3.14 * r * r;

    return s;
}

//重载<<实现输出圆的面积
ostream& operator<<(ostream &output, Circle &c)
{
    output<<"圆的面积:"<<c.getArea()<<endl;

    return output;
}

void main()
{
    //定义一个圆对象
    Circle c(1.0, 2.9, 4.0);

    //输出圆的半径
    cout<<"圆的半径:"<<c.GetRadius()<<endl;

    //输出圆的面积
    cout<<c;

    system("pause");
}

执行结果

时间: 2024-10-27 13:47:19

Point类派生出Circle类的相关文章

继承的综合运用《Point类派生出Circle类并且进行各种操作》

类的组合与继承 (1)先建立一个Point(点)类,包含数据成员x,y(坐标点): (2)以Point为基类,派生出一个Circle(圆)类,增加数据成员(半径),基类的成员表示圆心: (3)编写上述两类中的构造.析构函数及必要的输入输出函数 (4)定义友元函数int locate,判断点p在圆c上.圆c内或圆c外,返回值<0圆内,==0圆上,>0 圆外: (5)重载关系运算符(6种)运算符,使之能够按圆的面积比较两个圆的大小: 程序代码 #include <iostream> #

java定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积

需求如下:(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积. (2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下: public void printAreas(Cirlce c, int times) 在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积.例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积. 在main方法

再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高),,以及求圆柱表面积的成员函数area和求圆柱体积的成员函数volume,实现需要的成员函数,并设计main

/* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作 者:郭辉 *完成时间:2016年5月10日 *版 本 号:v1.0 * *问题描述:再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高),,以及求圆柱表面积的成员函数area和求圆柱体积的成员函数volume,实现需要的成员函数,并设计main函数完成测试. *输入描述:无. *程序输出:体积,表面积. */ #

Python学习之旅—面向对象进阶知识:类的命名空间,类的组合与继承

前言 上篇博客笔者带领大家初步梳理了Python面向对象的基础知识,本篇博客将专注于解决三个知识点:类的命名空间,类的组合以及面向对象的三大特性之一继承,一起跟随笔者老看看今天的内容吧. 1.类的命名空间 在上一篇博客中,我们提到过对象可以动态添加属性,一起来回忆下昨天的知识点,看如下的代码: class A: pass a = A() a.name = 'alex' print(a.name) 这里我们手动为a对象添加了一个属性name,然后直接打印可以得到a对象的名称.通过这个例子,我们可以

EffectiveJava——类层次优于标签类

标签类: 有时候,可能会遇到带有两种甚至更多钟风格的类的实例的类,并包含表示实例风格的(tag)域.例如下面这个类,它能够表示圆形或者矩形: /** * 类层次优先与标签类 * @author weishiyao * */ // Tagged class - vastly inferior to a class hierarchy public class Figure1{ enum Shape { RECTANGLE, CIRCLE } // Tag field - the shape of

重要!!!实体类、数据访问类

创建两个类: users类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 实体类_数据访问类.App_Code { public class Users { private int _Ids; /// <summary> /// ids /// </summary> public int Ids { get { return _Ids;

C++ 类模板三(类模版中的static关键字)

//类模版中的static关键字 #include<iostream> using namespace std; /* 类模板本质上是c++编译器根据类型参数创建了不同的类, c++编译器在利用类模板生成类的时候会为每个类生成一个static变量 那么对于类中的static关键字就非常好理解了 static关键字修饰的变量是属于类的 同一个类的对象共享类的static静态变量 类模板中的static修饰的变量数据类型必须是确定的 不可以是类型参数 因为静态变量在类对象之前初始化 这时候还没有通

Java类的设计----Object 类

Object类 Object类是所有Java类的根父类如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类 public class Person { ... } 等价于: public class Person extends Object {. ... }例: method(Object obj){-}//可以接收任何类作为其参数 Object o=new Person; method(o); ==操作符与equals方法 ==操作符与equals方法的区别: =

C#派生类中使用基类protected成员的方法

我们知道C#中通过继承可以使一个具有公共数据和方法的基类被广泛应用从而减少代码量,这样派生类会具有基类中所有成员(除构造器等),我们理所当然可以通过派生类实例来使用基类的成员.那么当基类成员被protected修饰时,我们应该怎么在派生类中使用基类成员呢,下面将介绍使用方法. 首先我们贴一段错误的使用代码: 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Console.ReadLine(); 6 7 } 8 } 9 pub