C 单继承
2008-02-23 05:25:35来源:互联网 阅读 ()
在单继承中,每个类能够有多个派生类,但是每个派生类只能有一个基类,从而形成树形结构。
成员访问权限的控制
在《基类和派生类》一讲中,我们讲述了派生类和派生类的对象对基类成员的访问权限的若干规定,这里通过一个实例进一步讨论访问权限的具体控制,然后得出在使用三种继承方式时的调用方法。
//继承性的public继承方式的访问权限的例子 #include file://定义基类A class A { public: A() { cout<<"类A的构造函数!"< void Aprint() { cout<<"类A打印自己的private成员aa:"< int Aa; private: int aa; protected: int aaa; }; file://定义由基类A派生的类B class B : public A { public: B() { cout<<"类B的构造函数!"< void Bprint() { cout<<"类B打印自己的private成员bb和protected成员bbb:"< GetAaaa1();} private: int bb; void GetAaaa() { cout<<"类B的private函数访问类A的public数据成员Aa:"< cout<<"类B的private函数访问类A的protected数据成员aaa:"< protected: int bbb; void GetAaaa1() { cout<<"类B的protected函数访问类A的public数据成员Aa:"< cout<<"类B的protected函数访问类A的protected数据成员aaa:"< }; file://基类B的构造函数,需负责对基类A的构造函数的初始化 B::B(int i, int j, int k):A(i), bb(j), bbb(k) {} file://程式主函数 void main() { B b1(100, 200, 300); file://定义类B的一个对象b1,并初始化构造函数和基类构造函数 b1.B_Aprint(); file://类B调用自己的成员函数B_Aprint函数 b1.Bprint(); file://类B对象b1访问自己的private和protected成员 b1.Aprint(); file://通过类B的对象b1调用类A的public成员函数 } |
该程式的输出结果为:
类B的public函数访问类A的public数据成员Aa:100
类B的public函数访问类A的protected数据成员aaa:100
类B的private函数访问类A的public数据成员Aa:100
类B的private函数访问类A的protected数据成员aaa:100
类B的protected函数访问类A的public数据成员Aa:100
类B的protected函数访问类A的protected数据成员aaa:100
类B打印自己的private成员bb和protected成员bbb:200,300
类A打印自己的private成员aa:100
上述是属public继承方式,我们能够得出以下结论:
在公有继承(public)时,派生类的public、private、protected型的成员函数能够访问基类中的公有成员和保护成员;派生类的对象仅可访问基类中的公有成员。
让我们把继承方式public改为private,编译结果出现1处如下错误:
'Aprint' : cannot access public member declared in class 'A'
出错语句在于:b1.Aprint();,因此,我们能够得出以下结论:
在公有继承(private)时,派生类的public、private、protected型的成员函数能够访问基类中的公有成员和保护成员;但派生类的对象不可访问基类中的任何成员。另,使用class关键字定义类时,缺省的继承方式是private,也就是说,当继承方式为私有继承时,能够省略private。
让我们把继承方式public改为protected,能够看出,结果和private继承方式相同。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash