在C++中,所谓“继承”就是在一个已存在的类的基础上建立一个新的类。已存在的类(例如“马”)称为“基类(base class )”或“父类(father class )”。新建的类(例如“公马”)称为“派生类(derived class )”或“子类(son class )”。

以上介绍的是最简单的情况:一个派生类只从一个基类派生,这称为单继承(single
inheritance)
,这种继承关系所形成的层次是一个树形结构。一个派生类不仅可以从一个基类派生,也可以从多个基类派生。一个派生类有两个或多个基类的称为多重继承(multiple
inheritance)
。关于基类和派生类的关系,可以表述为:派生类是基类的具体化,而基类则是派生类的抽象。

声明派生类的一般形式为

   class 派生类名:[继承方式] 基类名{派生类新增加的成员};

继承方式包括: public (公用的),private (私有的)和protected(受保护的),此项是可选的,如果不写此项,则默认为private(私有的)。

Eg:

class
a :b

{

};

一个类的继承方式如果被制定为私有,那么在子类中它在子类中的所有成员都将是私有的。如果被指定为protected,则父类中public的成员在子类中变为protected(protected 和 private都不变化),如果被指定为public 那么所有都不变。

#include <iostream>
#define PI 3.1415926
using namespace std;
class Pointer
{
public:
Pointer(){}
Pointer(double a,double b):x(a),y(b){}
protected:
double x;
double y;
friend ostream &operator<<(ostream& out,Pointer &P);
};
ostream &operator<<(ostream& out,Pointer &P)
{
cout<<" Pointer: x,y is "<<P.x<<","<<P.y<<endl;
return out;
} class Circle:public Pointer
{
public:
Circle(){}
Circle(double a,double b,double dr):Pointer(a,b),r(dr){}
protected:
double r;
public:
double get_area()
{ return PI*r*r;
}
friend ostream &operator<<(ostream& out,Circle &c);
};
ostream &operator<<(ostream& out,Circle &c)
{
cout<<"Circle: radius :"<<c.r;
out<<c.x<<endl;
out<<c.y<<endl;
return out;
}
class Cylinder:Circle
{
public:
Cylinder(){}
Cylinder(double a,double b,double c,double d):Circle(a,b,c),h(d)
{
}
protected:
double h;
public:
double get_Volume()
{
return Circle::get_area()*h;
}
double get_area()
{
return 2*Circle::get_area()+2*PI*r*h;
}
friend ostream &operator<<(ostream& out,Cylinder &c);
};
ostream &operator<<(ostream& out,Cylinder &c)
{
cout<<"cylinder dimensions"<<endl;
cout<<"x: "<<c.x<<endl;
cout<<"y: "<<c.y<<endl;
cout<<"radius "<<c.r<<endl;
cout<<"height "<<c.h<<endl;
return out;
}
int main()
{
Pointer p(2,3);
Circle c(7,5,6);
Cylinder cy(10,12,11,13);
cout<<p;
cout<<c;
cout<<"area of circle :"<<c.get_area()<<endl;
cout<<cy;
cout<<"area of cylinder base is "<<cy.get_area()<<endl;
return 0;
}

[置顶] c++类的继承(inheritance)的更多相关文章

  1. Inheritance, Association, Aggregation, and Composition 类的继承,关联,聚合和组合的区别

    在C++中,类与类之间的关系大概有四种,分别为继承,关联,聚合,和组合.其中继承我们大家应该都比较熟悉,因为是C++的三大特性继承Inheritance,封装Encapsulation,和多态Poly ...

  2. [置顶] Android开发笔记(成长轨迹)

    分类: 开发学习笔记2013-06-21 09:44 26043人阅读 评论(5) 收藏 Android开发笔记 1.控制台输出:called unimplemented OpenGL ES API ...

  3. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  4. Javascript笔记----实现Page页面右下角置顶按钮.

    从用博客开始,发现博客园中很多博友的博客中在Page右下角都有个图标,不论屏幕怎么拉伸,都始终停留在右下角.点击后页面置顶.后面想想写一个Demo来实现这种效果吧. 一. 图标右下角固定. 1.SS ...

  5. python3 入门 (四) 类与继承

    Python 类 Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法. 对象可以包含任意数量和类型的数据. p ...

  6. Android自定义ScrollView实现一键置顶功能

    效果图如下: (ps:动态图有太大了,上传不了,就给大家口述一下要实现的功能吧) 要实现的功能:当ScrollView向上滑动超过一定距离后,就渐变的出现一个置顶的按钮,当滑动距离小于我们指定的距离时 ...

  7. Android的SwipeToDismiss第三方开源框架模拟QQ对话列表侧滑删除,置顶,将头像图片圆形化处理。

      <Android SwipeToDismiss:左右滑动删除ListView条目Item> Android的SwipeToDismiss是github上一个第三方开源框架(github ...

  8. 让WPF的Popup不总置顶的解决方案

    使用WPF的Popup的时候会发现有一个问题,它总是会置顶,只要Popup的StayOpen不设置为False,它就一直呆在最顶端,挡住其他的窗口. 解决方案是继承Popup重新定义控件PopupEx ...

  9. [置顶]VC2013的一个bug

    [置顶]VC2013的一个bug 前段时间在尝试使用一个C++的GUI库nana.这个库最大的特点在于使用现代C++风格去编写GUI程序,而不需要使用大量的比较丑陋的代码(如MFC中的各种宏),或者其 ...

随机推荐

  1. 与非CCR代码互操作

    导读:CCR可以轻松的承载STA组件或者与它互操作:组件应该创建一个只有一个线程的CCR Dispatcher实例,并且在Dispatcher的构造函数中指定线程套间策略.DispatcherQueu ...

  2. Appium自动化测试环境的搭建及脚本执行

    之前搭建了robotium的环境,并使用了一下,因为需要兼顾到ios的测试,所以这次又搭建了appium的环境.关于Appium的介绍网上有很多了,也可以去它的官网学习,这里就不在赘述了. 具体搭建步 ...

  3. 那些年一起踩过的坑 — java 自动装箱拆箱问题

    坑在哪里?   我们都知道Java的八种基本数据类型:int, short, long, double, byte, char, float, boolean   分别有各自对应的包装类型:Integ ...

  4. HTML5学习之FileReader接口

    http://blog.csdn.net/zk437092645/article/details/8745647 用来把文件读入内存,并且读取文件中的数据.FileReader接口提供了一个异步API ...

  5. HW7.11

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  6. HDU-4689 Derangement DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4689 题意:初始序列1,2...n,求所有满足与初始序列规定大小的错排数目.. 这道题目感觉很不错~ ...

  7. Gym 100827G Number Game (博弈)

    Number Game Alice and Bob are playing a game on a line of N squares. The line is initially populated ...

  8. light oj 1214 - Large Division

    1214 - Large Division   PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: 32 MB G ...

  9. iOS 详解NSXMLParser方法解析XML数据方法

    前一篇文章已经介绍了如何通过URL从网络上获取xml数据.下面介绍如何将获取到的数据进行解析. 下面先看看xml的数据格式吧! <?xml version="1.0" enc ...

  10. (step 4.3.5)hdu 1035(Robot Motion——DFS)

    题目大意:输入三个整数n,m,k,分别表示在接下来有一个n行m列的地图.一个机器人从第一行的第k列进入.问机器人经过多少步才能出来.如果出现了循环 则输出循环的步数 解题思路:DFS 代码如下(有详细 ...