C++中public,protected,private的理解

 1 class BaseClass
 2 {
 3 public:
 4     int public_int;
 5 private:
 6     int private_int;
 7 protected:
 8     int protected_int;
 9 };
10 
11 class DerivedClass :public BaseClass {
12 public:
13     void UsePublicInt()
14     {
15         public_int = 1; //正确
16     }
17     void UserPrivateInt()
18     {
19         private_int = 1;//错误:成员 BaseClass::private_int不可访问
20     }
21     void UserProtectedInt()
22     {
23         protected_int = 1; //正确 
24     }
25 };
26 
27 //protected 对ProtectedDerivedClass的派生类和用户和友元函数产生影响,对ProtectedDerivedClass自身的成员函数无影响
28 class ProtectedDerivedClass :protected BaseClass {
29 public:
30     void UsePublicInt()
31     {
32         public_int = 1; //正确 BaseClass::public_int是公有的
33     }
34     void UserPrivateInt()
35     {
36         private_int = 1;//错误:成员 BaseClass::private_int不可访问
37     }
38     void UserProtectedInt()
39     {
40         protected_int = 1; //正确 
41     }
42 };
43 
44 int main()
45 {
46     BaseClass baseclass;
47     baseclass.public_int; //正确
48     baseclass.protected_int; //错误:成员 BaseClass::protected_int不可访问
49     baseclass.private_int; //错误:成员 BaseClass::private_int不可访问
50 
51     DerivedClass derivedclass;
52     derivedclass.public_int;   //正确
53     derivedclass.protected_int; //错误:成员 BaseClass::protected_int不可访问
54     derivedclass.private_int; //错误:成员 BaseClass::private_int不可访问 
55 
56     ProtectedDerivedClass protectedderivedclass;
57     protectedderivedclass.public_int = 1;//错误:成员 BaseClass::public_int不可访问 原因 ProtectedDerivedClass :protected DerivedClass,对ProtectedDerivedClass的用户而言public_int是protectd,所以无法访问
58     protectedderivedclass.protected_int; //错误:成员 BaseClass::protected_int不可访问
59     protectedderivedclass.private_int; //错误:成员 BaseClass::private_int不可访问 
60 }

 

posted @ 2018-02-24 22:42  风轻云淡走天涯  阅读(457)  评论(0编辑  收藏  举报