关闭

c++中的成员访问级别和派生继承方式

标签: c++继承方式
386人阅读 评论(0) 收藏 举报
分类:

1.一个类中的不同变量和函数的访问属性

  总共有三种访问级别[public,private,protected]在类中定义的成员变量和成员函数的时候,如果不在变量前面加上访问级别修饰符,类中默认为私有成员变量或者私有成员函数,而在结构体中如果不写则默认为共有成员变量或共有成员函数,

什么意思呢,对于类(比如类名为a的一个类)中的成员变量或者成员函数,

||如果定义为public,那么这个变量或者函数在另外一个类(比如b)中这个b可能是一个普通类也可能是他的派生类(继承类),都可以访问,不管是通过类名访问静态公共变量,或者实例(a)出来的的对象,点出来的方式,或者指向某个类a对象的指针来访问。

        属于开放的在哪里都可以用合理的方式访问;

||如果定义为private,那么这个变量或者函数在另外一个类(比如b)中,这个b可能是一个普通类也可能是他的派生类(继承类),都可以访问,不管是通过类名访问静态公共变量,或者实例(a)出来的的对象,点出来的方式,或者指向某个类a对象的指针来访问都可以访问。永远都属于父类a自己的;

      属于自己的,在哪里都不可以通过这三种方式访问;

||如果定义为protected,那么这个变量或者函数在另外一个非派生类(比如b)中,是不可以访问的,如果是他的派生类(继承类)那就属于a这个类族的类是可以的,但是a的派生类,又在其他类中实例化,这个实例对象是一样可以访问a中的保护型成员变量或者成员函数,不管是通过a类名访问静态公共变量,或者实例(a)出来的的对象,点出来的方式,或者指向某个类a对象的指针来访问(a *p=new a(); p->m(a的公共函数或者变量))。

    属于整个类族的,但在外部类(一个没有继承过类a的类中)不能访问;


2.对于一个类的派生类的继承方式

1.公有继承(public)

  如果类c继承了类a继承方式为public,那么父类中的公有成员和保护成员都以原来的属性保存在派生类中,保存在当前这个或者说所有其派生类中,(当然父类中私有成员还是不可以直接访问),派生类中的新定义的成员变量新成员函数可以访问到父类中的公有成员和保护成员。

   在类族以外,这个派生类的对象和成员可以访问从父类中继承来的公有成员而不能访问保护成员,如果当前这个派生类继续被公有继承,新的派生类中一样可以访问基类a和他的父类从基类继承过来的所有成员变量和函数。这就是公有继承(public)

2.私有继承(private)

  父类中的公有成员和保护成员都以私有方式,保存在当前这个或者说所有其派生类中,(当然父类中私有成员还是不可以直接访问),派生类中的新成员变量新成员函数还是可以访问到父类中的公有成员和保护成员。

但是在类族以外,这个派生类的对象和成员不能访问从父类中继承来的 公有成员和保护成员了,如果当前这个派生类继续被公有继承,新的派生类中就不能在访问基类a和他的父类从基类继承过来的所有成员变量和函数。这就是私有继承。私有继承之后基l类a的成员无法在当前派生类以后的派生类中发挥作用,一般很少使用私有继承;

3.保护继承(protected)

  父类中的公有成员和保护成员都以保护级别保存在当前这个派生类中(当然父类中私有成员还是不可以直接访问),派生类中的新成员变量新成员函数可以访问到父类中的公有成员和保护成员。

但是在类族以外,这个派生类的对象和成员不能访问从父类中继承来的 公有成员和保护成员了,如果当前这个派生类继续被公有继承,新的派生类访问遵守公有继承原则,继续作为保护级别成员。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

C++继承时派生类的成员访问属性

公用(public):访问权限最高;除派生类外,外部函数也可以直接访问(无论是成员变量还是成员函数)。 私有(private):访问权限最低;只能是该类内部函数互相调用,派生类、外部函数都不能访问。 保护(protect):访问权限中间;该类内部函数、派生类都能访问,外部类、外部函数不能...
  • zhang2531
  • zhang2531
  • 2016-03-31 16:41
  • 910

c++继承详解之一——继承的三种方式、派生类的对象模型

C++是OOP(Object Oriented Programming)语言,即面向对象编程语言。OOP的核心思想就是数据抽象(类的设计),继承和动态绑定。 类展现了C++的封装特性,即将具体的实现过程隐藏,只向外暴露公有接口,即数据抽象,通过数据抽象,我们可以将类的接口与实现分离,(即设计类)。 ...
  • lixungogogo
  • lixungogogo
  • 2016-04-11 01:00
  • 3409

C++三种继承方式下的访问权限控制

众所周知,C++类中的成员(函数/变量)拥有三种访问权限:        public:用该关键字修饰的成员表示公有成员,该成员不仅可以在类内可以被访问,在类外也是可以被访问的,是类对外提供的可访问接口;        ...
  • casky237
  • casky237
  • 2017-01-28 17:11
  • 1648

C++中 public和private派生类继承问题和访问权限问题

当一个子类从父类继承时,父类的所有成员成为子类的成员,此时对父类成员的访问状态由继承时使用的继承限定符决定。 1.如果子类从父类继承时使用的继承限定符是public,那么 (1)父类的public成员成为子类的public成员,允许类以外的代码访问这些成员; (2)父类的private成员仍旧...
  • u011038411
  • u011038411
  • 2013-06-20 13:12
  • 1028

类成员的3种访问属性 类的3种继承方式(继承性也叫派生性)

类成员的3种访问属性: 1.public:可以给子类或者类的外部访问; 2.protected:可以给子类访问,不能给类的外部访问; 3.private:子类和类的外部访问都不能访问。 类的3种派生方式(继承方式): 基类 成员的模式 private protected public 派生类的派...
  • qq_32203693
  • qq_32203693
  • 2016-07-23 12:17
  • 817

浅析C++继承与派生

测试环境: Target: x86_64-linux-gnu gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2.1)  定义 要分析继承,首先当然要知道什么是继承:继承是面向对象程旭设计中使代码可以复用的最重要的手段,它允许程序员在...
  • qq_33724710
  • qq_33724710
  • 2016-06-11 10:44
  • 2970

C++三种继承方式的区别

// test1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "iostream" using namespace std; class A { public:A() { cout&...
  • d06110902002
  • d06110902002
  • 2016-05-24 18:32
  • 868

C++继承与派生的异同点

C++继承与派生的异同点 在C++中,面向对象有三大特性:封装、继承、多态。今天主要是想写点C++有关继承与多态的内容。 1、基本概念 类的继承是一个新的类从已有的类那里得到已有的特性; 类的派生是从已有的类产生新的类的过程。并且我们称原有的类称为基类或者父类,产生新的类称为派生类或者子类。 ...
  • Jinlong_Xu
  • Jinlong_Xu
  • 2016-10-31 22:01
  • 697

C++派生访问控制说明符

访问说明符(public,protected,private)类型:         类成员访问说明符         继承访问说明符   继承访问说明符说明了派生类中基类部分成员的继承方式。 (1)通过pub...
  • songshiMVP1
  • songshiMVP1
  • 2015-07-15 16:20
  • 1136

C++第四次实验——派生和继承1

一、问题及代码: /* * 文件名称:c++第四次实验——派生和继承1.cpp * 作 者:郭宇辉 * 完成日期:2016年 4 月 25 日 ——草稿 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:根据一声明好的类及测试函数完成成员函数。 * 输入描述:无 * 问题描述...
  • Guo2557936113
  • Guo2557936113
  • 2016-05-06 11:38
  • 632
    个人资料
    • 访问:50214次
    • 积分:768
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:26篇
    • 译文:1篇
    • 评论:6条
    文章分类