• public、potected 、private继承下的子类对父类成员的访问情况


    #include<iostream>
      2 #include<string>
      3 using namespace std;
      4 class parent{
      5 protected:
      6         int m_a;
      7         int m_b;
      8 public:
      9         int m_c;
     10         void set(int a,int b,int c){
     11                 m_a = a;
     12                 m_b = b;
     13                 m_c = c;
     14         }
     15 };
     16 class child_A:public parent{
     17 public:
     18         void print(){
     19                 cout << "m_a=" << m_a << endl;
     20                 cout << "m_b=" << m_b << endl;
     21                 cout << "m_c=" << m_c << endl;
     22         }
     23 };
     24 class child_B:protected parent{
     25 public:
     26         void print(){
     27                 cout << "m_a=" << m_a << endl;
     28                 cout << "m_b=" << m_b << endl;
     29                 cout << "m_c=" << m_c << endl;
                                                                                                                                       1,8          顶端
     30         }
     31 
     32 };
     33 class child_C:private parent{
     34 public:
     35         void print(){
     36                 cout << "m_a=" << m_a << endl;
     37                 cout << "m_b=" << m_b << endl;
     38                 cout << "m_c=" << m_c << endl;
     39         }
     40 
     41 };
     42 int main(){
     43         child_A a;//public继承
     44         child_B b;//protected 继承
     45         child_C c;//private继承
     46         a.m_c = 100;//100
     47         //b.m_c = 100;//100
     48         //c.m_c = 100;
     49         return 0;
     50         a.print();
     51         b.print();
     52         c.print();
     53         cout << endl;
     54         a.set(1,1,1);
     55         b.set(2,2,2);
     56         c.set(3,3,3);
     57 }
    //结果

    class.cpp:10:7: error: ‘void parent::set(int, int, int)’ is inaccessible
    void set(int a,int b,int c){
    ^
    class.cpp:54:13: error: within this context
    b.set(2,2,2);
    ^
    class.cpp:54:13: error: ‘parent’ is not an accessible base of ‘child_B’
    class.cpp:10:7: error: ‘void parent::set(int, int, int)’ is inaccessible
    void set(int a,int b,int c){
    ^
    class.cpp:55:13: error: within this context
    c.set(3,3,3);
    ^
    class.cpp:55:13: error: ‘parent’ is not an accessible base of ‘child_C’

  • 相关阅读:
    uniapp 环境变量
    vue 生命周期
    浏览器的工作原理
    monent
    维基百科
    vue 生命周期(二) uniapp
    二进制安装K8S kubctl get node 返回No resources found
    k8s master节点高可用 nginx+keepalived配置文件
    elesticsearch启动
    qt多线程内存崩溃
  • 原文地址:https://www.cnblogs.com/DXGG-Bond/p/11919527.html
Copyright © 2020-2023  润新知