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继承比较合理。

时间: 2024-12-28 11:35:43

C++公有、私有、保护继承的关系的相关文章

关于C++中公有继承、私有继承、保护继承的讨论

一.文章来由 简单明了的理由,老生常谈但是没真正解决的问题,想搞清楚这个问题. 二.冗长的定义 我们先来看看这些冗长的定义: 公有继承: 当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变,而基类的私有成员不可直接访问.也就是说基类的公有成员和保护成员被继承到派生类中访问属性不变,仍作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们.在类族之外只能通过派生类的对象访问从基类继承的公有成员. 私有继承: 当类的继承方式为私有继承时,基类中的公有成员和保护成员

C++中公有继承、保护继承、私有继承的区别

公有继承时基类中各成员属性保持不变,基类中private成员被隐藏.派生类的成员只能访问基类中的public/protected成员,而不能访问private成员:派生类的对象只能访问基类中的public成员. 私有继承时基类中各成员属性均变为private,并且基类中private成员被隐藏.派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员:派生类的对象不能访问基类中的任何的成员. 保护继承时基类中各成员属性均变为protected,并且基类中p

概念:类继承—公有继承、私有继承、保护继承

一.公有(Pulic)继承 “继承”是类的重要特性.A类继承B类,我们称B类为“基类”,也称为“父类”,A类则相应地被称为“派生类”或“子类”.A类继承了B类之后,A类就具有了B类的部分成员.那么,究竟从基类那儿得到了哪些成员,这由2方面决定,①继承方式,②基类成员的访问权限(即public/private/protected). 继承有三种方式,即公有(Public)继承.私有(Private)继承.保护(Protected)继承.我们先讨论最常用的公有继承.公有继承就是将基类的公有成员变为自

public/protect/private和公有继承/保护继承/私有继承的简单理解

一.先来看一下没有继承的情况 类中的变量访问: (1)类内访问方式:通过public成员函数访问 (2)类外访问方式:直接访问 表 1 class A { public: int a; protected: int b; private: int c; public: int getAll(){ return a + b + c; } }; int main() { A testA; //类外访问方式 testA.a; testA.b; testA.c; //类内访问方式 testA.getAl

C++之共有继承、保护继承、私有继承

1.封装,public,private作用就是这个目的. 类外只能访问public成员而不能方位private成员: private成员只能被类成员和友元访问: 2.继承,protected的作用就是这个目的: protected成员可以被子类对象访问,但不能被类外的访问: 3.公有继承:class A : public B #include<iostream> #include<assert.h> using namespace std; class A{ public: int

保护继承

#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; class CBase1//定义基类 { public://定义公有型成员 void SetXY(int a, int b) { x1 = a; y1 = b; num1 = 10; } void Show() { cout << "在基类CBase1中,公有型变量y1的值为:" << y1 <&l

EF里的继承映射关系TPH、TPT和TPC的讲解以及一些具体的例子

EF里的继承映射关系TPH.TPT和TPC的讲解以及一些具体的例子 本章节讲解EF里的继承映射关系,分为TPH.TPT.TPC.具体: 1.TPH:Table Per Hierarchy 这是EF的默认的继承映射关系:一张表存放基类和子类的所有列,自动生成的discriminator列用来区分基类和子类的数据.新建一个度假村Resort实体类试试: /// <summary> /// 度假村类 /// </summary> public class Resort : Lodging

Java类集(接口继承的关系)

类集的概念: 类集(Collection)就是一个动态的对象数组,与一般的对象数组不同,类集中的对象内容可以任意扩充. 类集的特性: 这种框架是高性能的 框架必须允许不同类型的类集以相同的方式和高度互操作方式工作 类集必须是容易扩展和/或修改的 Java类集(接口继承的关系)

C++公有继承,私有继承和保护继承的区别

昨天学习三种继承方式,有些比喻十分形象,特此分享. 首先说明几个术语: 1.基类 基类比起它的继承类是个更加抽象的概念,所描述的范围更大.所以可以看到有些抽象类,他们设计出来就是作为基类所存在的(有些名字里面有abstract的). 基类也叫父类,虽然本人觉得这个比喻并不恰当.因为实际上子类是基类的扩充,描述了更加具体的东西.但现实的父子关系并非如此.但在有些方面这个比喻还是比较恰当的. 现在我们假设基类是一个快要退休的富豪.代码如下: class RichMan { public: RichM