C /CLI思辨录之再谈继承
2008-02-23 05:05:33来源:互联网 阅读 ()
在OO和C 中,类成员共有三种级别的继承:public,protected和private。对于基类成员的存取操作应该依赖于下面两个因素:
·派生类声明其类头(public, protected 或 private)的方式
·对类成员的存取指定标志(public, protected 或 private)
假如您在基类中声明成员为private,那么这些成员对于任何派生类都是不可存取的。
假如您在基类中声明成员为protected,而且新类是基类的私有派生,那么这些成员在派生类中变为私有的。
假如您在基类中声明成员为protected,而且新类是基类的protected 型派生,那么这些成员在派生类中变为protected 的。
假如您在基类中声明成员为protected,而且新类是基类的public 型派生,那么这些成员在派生类中变为protected的。
假如您在基类中声明成员为public,而且新类是基类的private 型派生,那么这些成员在派生类中变为private 的。
假如您在基类中声明成员为public,而且新类是基类的protected 型派生,那么这些成员在派生类中变为protected的。
假如您在基类中声明成员为public,而且新类是基类的public 型派生,那么这些成员在派生类中变为public 的。
这是一些老式的C 规则。在.Net中,情况就大大不同了-.Net仅支持public继承。但是当一个类被public继承,则基类的保护成员将对新的派生类成为private的。
考虑下面的三个C 类:
class A { protected: void fa() { printf("fa called"); } }; class B : public A { public: void fb() { fa(); } }; class C : public B { public: void fc() { fa(); } }; int main() { C c; c.fc(); return 0; } |
根据我前面介绍的规则,在C 中这些代码是能成功运行的。但是假如您把他们改变为托管类,则在类c中是不能调用fa()的。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: C /CLI思辨录之内部指针的两面性
下一篇: C /CLI思辨录之传递托管堆地址
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