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继承)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 邮箱服务器怎么清理缓存,如何清除Outl
- 下一篇: android R编译Super镜像时报