1 #pragma once 2 3 #include4 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 CBase27 {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 }