http://thinkinginmylife.spaces.live.com/blog/cns!E44140D5E07BEC07!137.entry

我转~~~C++5(public, protected, private继承)

在继承关系中,基类的private成员不但对应用程序隐藏,即使是派生类也是隐藏不可访问的,而基类的保护成员只对应用程序隐藏,对于派生类来说是不隐藏的,保护继承与私有继承在实际编程工作中使用是极其少见的,他们只在技术理论上有意义。

//程序作者:管宁   
//站点:www.cndev-lab.com   
//所有稿件均有版权,如要转载,请务必著名出处和作者   
 
#include <iostream> 
using namespace std; 
 
class Base 

    public://公有的 
        int a1; 
        virtual void test() = 0; 
    protected://受保护的 
        int a2; 
    private://私有的 
        int a3; 
}; 
//------------------------------------------------------------------------------ 
class ProtectedClass:protected Base//保护继承 

    public: 
        void test() 
        { 
            a1 = 1;//a1在这里被转变为protected 
            a2 = 2;//a2在这里被转变为protected 
            //a3=3;//错误,派生类不能访问基类的私有成员 
        } 
}; 
class ControlProtectedClass:public ProtectedClass//以public方式继承ProtectedClass类 

    public: 
        void test() 
        { 
            a1 = 1;//a1在这里仍然保持为a1在这里被转变为protected 
            a2 = 2;//a2在这里仍然保持为a1在这里被转变为protected 
            //a3=3;//错误,由于Base类成员为私有的,即使是上级父类是保护继承,也不能改变Base类成员的控制类型 
        } 
}; 
//------------------------------------------------------------------------------ 
class PrivateClass:private Base//私有继承 

    public: 
        void test() 
        { 
            a1 = 1;//a1在这里被转变为private 
            a2 = 2;//a2在这里被转变为private 
            //a3=3;//错误,基类私有成员对文件区域与派生类区域都是不可访问的 
        } 
}; 
class ControlPrivateClass:public PrivateClass//以public方式继承PrivateClass类 

    public: 
        void test() 
        { 
            //a1=1;//错误,由于基类PrivateClass为私有继承,a1已经转变为private 
            //a2=2;//错误,由于基类PrivateClass为私有继承,a1已经转变为private 
            //a3=3;//错误,由于Base类成员为私有的,PrivateClass类也为私有继承 
        } 
}; 
//------------------------------------------------------------------------------ 
class PublicClass:public Base//共有继承有区别与其它方式的继承,继承后的各成员不会其改变控制方式 

    public: 
        void test() 
        { 
            a1 = 1;//a1仍然保持public 
            a2 = 2;//a2仍然保持protected 
            //a3=3;//错误,派生类不能操作基类的私有成员 
        } 
}; 
class ControlPublicClass:public PublicClass//以public方式继承PublicClass类 

    public: 
        void test() 
        { 
            a1 = 1;//a1仍然保持public 
            a2 = 2;//a2仍然保持protected 
            //a3=3;//错误,由于Base类成员为私有成员,即使是上级父类是公有继承,也不能改变Base类成员的控制类型 
        } 
}; 
//------------------------------------------------------------------------------ 
int main() 

    system("pause");  
}

转载于:https://www.cnblogs.com/carl2380/archive/2011/01/03/1924556.html

C++ (public, protected, private继承)相关推荐

  1. php protected 的继承,14 PHP 类的继承 [public protected private] parent 构造方法 析构方法 重写 最终类和方法 设计模式...

    类的继承 简单理解: 某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息. 基本概念 ...

  2. C++ 中的三种继承public , protected, private

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

  3. C++中的三种继承public,protected,private详细解析

    我们已经知道,在基类以private方式被继承时,其public和protected成员在子类中变为private成员.然而某些情况下,需要在子类中将一个或多个继承的成员恢复其在基类中的访问权限 三种 ...

  4. JAVA修饰符类型(public,protected,private,friendly)

    JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的不论什么类均能够訪问: protected的类.类属变量及方法, ...

  5. Java关键字系列(public,protected,private)

    Java关键字系列(public,protected,private) public.protected和private做为java访问权限修饰词而使用. 首先要明白,java中的每个定义(定义类.字 ...

  6. C++ 类访问控制(public/protected/private)小结

    第一:private, public, protected 访问标号的访问范围. private:只能由1.该类中的函数.2.其友元函数访问. 不能被任何其他访问,该类的对象也不能访问. protec ...

  7. C++ Public, Protected, Private

    当private,public,protected单纯的作为一个类中的成员权限设置时: private: 只能由该类中的函数.其友元函数访问,不能被任何其他访问,该类的对象也不能访问. protect ...

  8. C++ 类访问控制(public/protected/private)

    From: http://cnmtjp.blog.51cto.com/204390/36548 C++中 public,protected, private 访问标号小结 第一:private, pu ...

  9. public protect private继承

    引自原来在CGD讨论的几点总结: 1. public继承被称为类型继承(type inheritance).往往反映is-a关系. 2. protected继承基类的所有公有成员都成为派生类的prot ...

最新文章

  1. baidu mp3竟然还加密,太扯了
  2. Atitit.安全性方案规划设计4gm  v1 q928
  3. 转:Jquery AJAX POST与GET之间的区别
  4. orcale 非非等于_oracle 不等于1怎么查?
  5. 台式计算机 启天 m4600,联想启天M4600-N000:高效的焕新之选——台式机
  6. python代码质量检查工具_python代码检查工具pylint 让你的python更规范
  7. 安卓一步一步搭建组件化
  8. 安装mysql中文步骤_MySql安装步骤图文教程及中文乱码的解决方案
  9. cmd 生成wsdl文件_Spring Boot SOAP系列之WSDL是什么“Lese”
  10. mysql 分表 存储过程,通用分表存储过程
  11. 文献挖掘:SATI文献题录信息统计分析工具初试
  12. 仓库如何盘点?使用盘点机盘点有什么好处?仓库盘点方法?
  13. 数据结构笔记(王道考研) 第八章:排序
  14. 单亲家庭父子的理财通信
  15. c++、python实现置换密码(栅栏技术,列置换)、替代密码(加法密码(Caesar密码),乘法密码)
  16. proxmox PVE 安装 黑群晖
  17. 解决的问题记录(持续更新)
  18. DirectShow编程(3.5) - 关于DirectShow - DirectShow中的事件通告
  19. Unity中使用Post Processing 开自发光效果
  20. 高等数学(下)多元函数微分法及其应用

热门文章

  1. 实战:遇到HTM的文件图标丢失的问题
  2. Performance Prism
  3. rhel5.5_Apache配置openssl支持https服务
  4. Ubuntu 14.04 FTP服务器--vsftpd的安装和配置
  5. SpringBoot实现Java高并发秒杀系统之DAO层开发(一)
  6. nginx 缓存配置及报错解决
  7. 《像计算机科学家一样思考Python》——3.9 变量和形参是局部的
  8. javascript12-object04-毕包
  9. BCP utility in Sybase(Unix Environment)
  10. Mac终端显示 bogon的问题