1 #pragma once
2
3 #include <iostream>
4
5 namespace WYP
6 {
7 class CBase
8 {
9 public:
10 int m_BasePublic;
11
12 void setY(int y) {m_y = y;}
13 void setZ(int z) {m_z = z;}
14 int getX() {return m_x;}
15 int getZ() {return m_z;}
16
17 protected:
18 void setX(int x) {m_x = x;}
19 int m_z;
20 private:
21 int m_x;
22 int m_y;
23
24 };
25
26 class CDivedA : public CBase
27 {
28 public:
29 void setXandZ(int x)
30 {
31 setX(x);//0.派生类的公有成员函数可以访问基类的保护成员函数吗?,可以
32 m_z = x;//1.派生类的公有成员函数可以访问基类的保护成员变量吗?,可以
33 }
34
35 protected:
36 void setXX(int x)
37 {
38 m_XX = x;
39 setX(x);//00.派生类的保护成员函数可以访问基类的保护成员函数吗?,可以
40 m_z = x;//11.派生类的保护成员函数可以访问基类的保护成员变量吗?,可以
41 }
42
43 private:
44 int m_XX;
45 int m_YY;
46 int m_ZZ;
47 };
48
49 void fun()
50 {
51 CBase a;
52 //a.setX(3);//2.类的对象不能访问类的保护成员函数;
53 //a.m_z = 3;//3.类的对象不能访问类的保护成员变量
54
55 CDivedA b;
56 b.setXandZ(5);
57 //b.setX(1);//3.派生类的对象不能访问基类的私有的、保护的成员函数;
58 //b.m_z = 3;//4.派生类的对象不能访问基类的私有的、保护的成员变量
59
60 std::cout << b.getX() << std::endl;//5.派生类的对象只可以访问基类的公有成员函数、公有成员变量
61 b.m_BasePublic = 1;//5.派生类的对象只可以访问基类的公有成员函数、公有成员变量
62 }
63 }