zoukankan      html  css  js  c++  java
  • C++中派生类对基类成员的访问形式

    来源:http://www.cppblog.com/woaidongmao/archive/2010/07/01/119024.html

    C++中派生类对基类成员的访问形式主要有以下两种:
    1、内部访问:由派生类中新增成员对基类继承来的成员的访问。
    2、对象访问:在派生类外部,通过派生类的对象对从基类继承来的成员的访问。今天给大家介绍在3中继承方式下,派生类对基类成员的访问规则。

     

    1、私有继承的访问规则
    当类的继承方式为私有继承时,基类的public成员和protected成员被继承后成为派生类的private成员,派生类的其它成员可以直接访问它们,但是在类的外部通过派生类的对象无法访问。基类的private成员在私有派生类中是不可直接访问的,所以无论是派生类的成员还是通过派生类的对象,都无法直接访问从基类继承来的private成员,但是可以通过基类提供的public成员函数间接访问。私有继承的访问规则总结如下:

    基类成员

    private成员

    public成员

    protected成员

    内部访问

    不可访问

    可访问

    可访问

    对象访问

    不可访问

    不可访问

    不可访问

     

    2、公有继承的访问规则
    当类的继承方式为公有继承时,基类的public成员和protected成员被继承到派生类中仍作为派生类的public成员和protected成员,派生类的其它成员可以直接访问它们。但是,类的外部使用者只能通过派生类的对象访问继承来的public成员。基类的private成员在私有派生类中是不可直接访问的,所以无论是派生类成员还是派生类的对象,都无法直接访问从基类继承来的private成员,但是可以通过基类提供的public成员函数直接访问它们。公有继承的访问规则总结如下:

    基类成员

    private成员

    public成员

    protected成员

    内部访问

    不可访问

    可访问

    可访问

    对象访问

    不可访问

    可访问

    不可访问

     

    3、保护继承的访问规则
     当类的继承方式为保护继承时,基类的public成员和protected成员被继承到派生类中都作为派生类的protected成员,派生类的其它成员可以直接访问它们,但是类的外部使用者不能通过派生类的对象访问它们。基类的private成员在私有派生类中是不可直接访问的,所以无论是派生类成员还是通过派生类的对象,都无法直接访问基类中的private成员。保护继承的访问规则总结如下:
     

    基类成员

    private成员

    public成员

    protected成员

    内部访问

    不可访问

    可访问

    可访问

    对象访问

    不可访问

    不可访问

    不可访问


    微信公众号: 猿人谷
    如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
    如果您希望与我交流互动,欢迎关注微信公众号
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

  • 相关阅读:
    高性能反射初体验2
    高性能反射初体验1
    HTML解析原理
    QQ邮箱漂流瓶的"变化"~~
    javascript跟随滚动条滚动,onscroll事件的学习
    认识一下window.location.hash
    IE中替换a标签href属性的一个bug
    用css Sprites的时候IE6的一个小bug
    css中如何引入“非常” 字体
    [重温经典]ie6 不支持position:fix的解决方案
  • 原文地址:https://www.cnblogs.com/heyonggang/p/3026107.html
Copyright © 2011-2022 走看看