C++ (public, protected, private继承)
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继承)相关推荐
- php protected 的继承,14 PHP 类的继承 [public protected private] parent 构造方法 析构方法 重写 最终类和方法 设计模式...
类的继承 简单理解: 某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息. 基本概念 ...
- C++ 中的三种继承public , protected, private
三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...
- C++中的三种继承public,protected,private详细解析
我们已经知道,在基类以private方式被继承时,其public和protected成员在子类中变为private成员.然而某些情况下,需要在子类中将一个或多个继承的成员恢复其在基类中的访问权限 三种 ...
- JAVA修饰符类型(public,protected,private,friendly)
JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的不论什么类均能够訪问: protected的类.类属变量及方法, ...
- Java关键字系列(public,protected,private)
Java关键字系列(public,protected,private) public.protected和private做为java访问权限修饰词而使用. 首先要明白,java中的每个定义(定义类.字 ...
- C++ 类访问控制(public/protected/private)小结
第一:private, public, protected 访问标号的访问范围. private:只能由1.该类中的函数.2.其友元函数访问. 不能被任何其他访问,该类的对象也不能访问. protec ...
- C++ Public, Protected, Private
当private,public,protected单纯的作为一个类中的成员权限设置时: private: 只能由该类中的函数.其友元函数访问,不能被任何其他访问,该类的对象也不能访问. protect ...
- C++ 类访问控制(public/protected/private)
From: http://cnmtjp.blog.51cto.com/204390/36548 C++中 public,protected, private 访问标号小结 第一:private, pu ...
- public protect private继承
引自原来在CGD讨论的几点总结: 1. public继承被称为类型继承(type inheritance).往往反映is-a关系. 2. protected继承基类的所有公有成员都成为派生类的prot ...
最新文章
- baidu mp3竟然还加密,太扯了
- Atitit.安全性方案规划设计4gm v1 q928
- 转:Jquery AJAX POST与GET之间的区别
- orcale 非非等于_oracle 不等于1怎么查?
- 台式计算机 启天 m4600,联想启天M4600-N000:高效的焕新之选——台式机
- python代码质量检查工具_python代码检查工具pylint 让你的python更规范
- 安卓一步一步搭建组件化
- 安装mysql中文步骤_MySql安装步骤图文教程及中文乱码的解决方案
- cmd 生成wsdl文件_Spring Boot SOAP系列之WSDL是什么“Lese”
- mysql 分表 存储过程,通用分表存储过程
- 文献挖掘:SATI文献题录信息统计分析工具初试
- 仓库如何盘点?使用盘点机盘点有什么好处?仓库盘点方法?
- 数据结构笔记(王道考研) 第八章:排序
- 单亲家庭父子的理财通信
- c++、python实现置换密码(栅栏技术,列置换)、替代密码(加法密码(Caesar密码),乘法密码)
- proxmox PVE 安装 黑群晖
- 解决的问题记录(持续更新)
- DirectShow编程(3.5) - 关于DirectShow - DirectShow中的事件通告
- Unity中使用Post Processing 开自发光效果
- 高等数学(下)多元函数微分法及其应用
热门文章
- 实战:遇到HTM的文件图标丢失的问题
- Performance Prism
- rhel5.5_Apache配置openssl支持https服务
- Ubuntu 14.04 FTP服务器--vsftpd的安装和配置
- SpringBoot实现Java高并发秒杀系统之DAO层开发(一)
- nginx 缓存配置及报错解决
- 《像计算机科学家一样思考Python》——3.9 变量和形参是局部的
- javascript12-object04-毕包
- BCP utility in Sybase(Unix Environment)
- Mac终端显示 bogon的问题