c++的继承与多重继承机制(转自http://www.kjsc.com.cn/software/newsjj.php?id=10828)
来源:互联网 发布:淘宝运营助理 编辑:程序博客网 时间:2024/05/22 06:58
//程序作者:管宁
//站点: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");
}
//站点: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");
}
- c++的继承与多重继承机制(转自http://www.kjsc.com.cn/software/newsjj.php?id=10828)
- MFC 弹出窗口MessageBox的使用[转自http://www.bigasp.com.cn/blog/?action=show&id=51]
- 澄清Java 接口与继承--转自http://www.leakon.com/
- 构造函数的继承(转自http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html)
- linux获取当前绝对路径[转自:http://www.linuxdiyf.com/viewarticle.php?id=84177]
- 编写安全 PHP 应用程序的七个习惯(转自 IBM Thoughtworks http://www.ibm.com/developerworks/cn/opensource/os-php-secure-apps/?S_TACT=105AGX52&S_CMP
- 收藏常用正则表达式 转自shuguang http://www.osphp.com.cn/read.php/453.htm
- http://www.docin.com/p-1741467.html类-单继承和多重继承
- 什么是Blog? (转自http://www.programfan.com/club/showbbs.asp?id=68106)
- +=与=..+..的区别(转自http://www.ticmy.com/?p=285)
- Fedora7安装后的配置(转自:想飞的鱼http://www.mxpc.cn/article.asp?id=772)
- JSTL 入门: 表达式语言(转自http://www.ibm.com/developerworks/cn/java/j-jstl0211/)
- JSTL 入门: 探讨 core(转自http://www.ibm.com/developerworks/cn/java/j-jstl0318/)
- 嵌入式从业人员调查报告(转自:http://www.farsight.com.cn/survey2/report.htm)
- Linux 汇编语言开发指南(转自http://www.ibm.com/developerworks/cn/linux/l-assembly/)
- COM中C++的多重继承机制探索
- ARM与51通信【转自:http://www.ivchen.cn/read.php/183.htm】
- 软件对用户的价值 //转载:http://www.infoq.com/cn/articles/Agile-Unleashes-Software-Value
- vml 实现饼图的代码
- 实验1 远程客户机能否通过共享内存访问服务器
- [转载]使用open source产品组装你的web应用架构(struts+spring+hibernate)
- 李白诗4首
- Visual Studio 2005 中的新的 DataSet 功能
- c++的继承与多重继承机制(转自http://www.kjsc.com.cn/software/newsjj.php?id=10828)
- 一个SQL存储过程分页和ASP调用
- Spring事务管理与数据库连接
- C#和JAVA5.0可以在String对象中使用类似天C的printf()格式化函数
- 你有志成为中国IT的人才吗
- 将 GAPI 游戏从纵向模式移植到方形屏幕
- 掌握 ASP.NET 之路:自定义实体类简介
- 发掘 C# 特性赋予科学计算项目以威力
- Eclipse提示和技巧