zoukankan      html  css  js  c++  java
  • C++公有、私有、保护继承的关系

    公有继承(public)、私有继承(private)、保护继承(protected)是C++三种继承方式。
    • 公有继承(public)
    公有继承(public)的特点是基类的公有成员(public)和保护成员(protected)作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有(public)的,不能被这个派生类的子类所访问。
    • 私有继承(private)
    私有继承(private)的特点是基类的公有成员(public)和保护成员(protected)都作为派生类的私有成员(private),并且不能被这个派生类的子类所访问,基类的私有成员仍然是私有(public)的。
    • 保护继承(protected)
    保护继承(protected)的特点是基类的所有公有成员(public)和保护成员(protected)都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有(public)的。
     

    公有继承(public)塑模出is-a关系

      适用于基类的每一件事情一定适用于派生类,每一个通过公有继承而来的派生类对象也是一个基类对象。

    私有继承(private)意味着implemented-in-terms-of(根据某物实现出)

      当一个class B private继承 class A 用意是采用class A 已经拥有的某些特性,而不是两个类之间存在任何观念上的关系。

    主要体现在一个子类对象不能转型为父类对象,从父类继承的所有成员都成为子类的私有成员。

    私有继承一般可以用复合来替代。复合可以塑模出has-a或implemented-in-terms-of(根据某物实现出)两种关系。当派生类

    需要访问protected 的基类成员或者重新定义virtual函数,应该用private继承比较合理。

    复合区别去公有继承(is-a),在应用领域体现的是has-a,在实现领域体现的是implemented-in-terms-of(根据某物实现出)。

    例如:一辆车有车轮,发动机,车身等组成,这就是has-a的关系;一个栈我们用两个队列去实现这就是implemented-in-terms-of(根据某物实现出)。

  • 相关阅读:
    USACO Milk2 区间合并
    Codeforces 490B Queue【模拟】
    HDU 3974 Assign the task 简单搜索
    HDU 5119 Happy Matt Friends(2014北京区域赛现场赛H题 裸背包DP)
    Cin、Cout 加快效率方法
    POJ 1159 回文LCS滚动数组优化
    POJ 2479 不相交最大子段和
    POJ 1458 最长公共子序列 LCS
    在阿里最深刻的,还是职场之道给我的震撼
    精细化
  • 原文地址:https://www.cnblogs.com/kiplove/p/7415244.html
Copyright © 2011-2022 走看看