基础链接

总结:  public继承基类成员访问权限没有变化;

protected继承基类public和protected权限变为protected,基类private不变。

private继承基类public和protected权限变为private,基类private不变,所以,在私有继承时,基类的成员只能由直接派生类访问,而无法再往下继承。

(根据派生类继承的方式,可推导派生类向基类转换时用户代码和成员函数和友元函数的可访问性)

1.public继承基类,派生类成员和友元都可以访问,(Base* B=new Diveration)用户代码,相对基类可以看到子类从基类继承的部分有public成员可访问;

2.任何继承方式,派生类成员和友元都可以访问,用户代码根据继承区别;

3.public&protected继承基类,派生类的派生类成员和友元都可以访问,而private继承不可访问(都变成派生类的私有了,不管你派生类的派生类怎么继承都是不可见的)

 class Base
{
public:
virtual void Try() const =; int public_int;
protected:
int protected_int;
private:
int private_int;
}; //继承改变的是public&protected
//private属于基类
class DiverA : public Base
{
public: //不管什么继承内部只有基类的public&protected可访问(任何继承public&protected的变化对于派生类都可见)
void Try() const override
{
std::cout << public_int << std::endl;
std::cout << protected_int << std::endl;
//std::cout << private_int << std::endl;
} }; int main(int argc, char *argv[])
{ Base *B = new DiverA;
B->Try();
B->public_int; //相对基类,派生类继承public区对基类可见而protected区和private区相对不可见;
//其他继承可以推导 return ;
}

可以通过using声明改变继承变量的权限(原private除外,虽然继承但是还是属于基类私有)

注意:派生类只能为那些它能访问到的成员提供using

 //基类
class Base
{
public:
int public_int;
protected:
int protected_int;
private:
int private_int;
}; //派生类
class DiverA : private Base
{
public:
//通过using改变继承权限,用户代码也改变
using Base::public_int;
using Base::protected_int;
}; //派生类的派生类
class DiverA_Diver : public DiverA
{ }; int main(int argc, char *argv[])
{ //普通代码
DiverA_Diver A;
A.protected_int;
A.public_int; //普通代码
DiverA B;
B.public_int;
B.protected_int; //用户代码(派生类向基类转换,权限改变了)
DiverA *base = new DiverA_Diver;
base->protected_int;
base->public_int; return ;
}

C++ public private protect 继承关系(链接)的更多相关文章

  1. public private protect

    public 公有  使用public意味着声明public之后的成员对每个人都是可用的 private 私有  除非必须公开底层实现细目,否则就应该将所有的域指定为private protect 继 ...

  2. public private, protect. 以及继承。 草稿。

    #include <iostream>#include <thread>#include <memory> // | 父类的public成员 | 父类的protec ...

  3. Public Private Protect Inheritance and access specifiers

    In the previous lessons on inheritance, we've been making all of our data members public in order to ...

  4. c++三种继承方式public,protect,private

    C++中的三种继承public,protected,private 三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员 ...

  5. public、protect、private在父类子类中使用

    先贴出一张,直观的.估计大家都见过的关于public.protect.private的范围图 作用域 当前类 同一package 子孙类 其他package public     T         ...

  6. c/c++再学习:C++中public、protect、private的访问权限控制

    C++中public.protect.private的访问权限控制 访问权限 一个类的public成员变量.成员函数,可以通过类的成员函数.类的实例变量进行访问 一个类的protected成员变量.成 ...

  7. c++ 之private /protect/ public

    C++中public.protect.private的访问权限控制 访问权限 一个类的public成员变量.成员函数,可以通过类的成员函数.类的实例变量进行访问 一个类的protected成员变量.成 ...

  8. hibernate映射的 关联关系:有 一对多关联关系,一对一关联关系,多对多关联关系,继承关系

    hibernate环境配置:导包.... 单向n-1:单向 n-1 关联只需从 n 的一端可以访问 1 的一端 <many-to-one> 元素来映射组成关系: name: 设定待映射的持 ...

  9. Hibernate注解方式配置-继承关系

    在JPA中,实体继承关系的映射策略共有三种:单表继承策略(table per class).Joined策略(table per subclass)和Table_PER_Class策略. 1.单表继承 ...

随机推荐

  1. aircrack-ng无线破解实验

    查看无线网卡 airmon-ng 开启网卡监听模式 airmon-ng start wlan0 扫描附近的wifi airodump-ng wlan0mon 停止扫描: ctrl c 使用airodu ...

  2. last命令详解

    基础命令学习目录首页 原文链接:https://blog.csdn.net/jerry_1126/article/details/54427119 [root@xiaoma /root] test!# ...

  3. Django_rest_framework_基础

    简介 为什么要使用REST framework? Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs. - 在线可视的API,对于赢得你的开发者们十分有用  ...

  4. nodejs的Cannot find module 'body-parser'

    http://blog.csdn.net/u014345860/article/details/77769253

  5. 图文转换NABCD

    作为图文转化还是有很多优点的,在这里我就分析一下它的方便快捷 Need:有些非电子版的文字不方便我们编辑,图文转换可以轻而易举达到目的. Approach:现在技术手段应该还有点难度,应该可以换个方法 ...

  6. 《Spring1之第八次站立会议》

    <第八次站立会议> 昨天:我查找了关于实现视频功能的相关代码. 今天:对用C#写的视频功能进行了相关的了解. 遇到的问题:由于对C#不是很了解,所以其中的有些代码还是看不懂.

  7. PTA计算平均值(一波三折)

    PTA计算平均值( 一波三折) 现在为若干组整数分别计算平均值. 已知这些整数的绝对值都小于100,每组整数的数量不少于1个,不大于20个. 输入格式:首先输入K(不小于2,不大于20).接下来每一行 ...

  8. C++获取private的变量-偷走private

    private提供了对数据的封装,使得private成员只能被类自身的成员函数以及类的友元访问,其他的函数或者类想要访问private成员只能通过该类所提供的set和get的方法进行访问, 或者返回其 ...

  9. 软工网络15团队作业8——Beta阶段冲刺合集

    博客链接集合 Beta阶段敏捷冲刺计划博客 Beta阶段冲刺第一天 Beta阶段冲刺第二天 Beta阶段冲刺第三天 Beta阶段冲刺第四天 Beta阶段冲刺第五天

  10. java 自定义异常的回顾

    一.异常的分类: 1.编译时异常:编译时被检测的异常 (throw后,方法有能力处理就try-catch处理,没能力处理就必须throws).编译不通过,检查语法(其实就是throw和throws的配 ...