zoukankan      html  css  js  c++  java
  • 派生类访问基类的私有成员

    派生类不能直接访问基类的私有成员,若要访问必须使用基类的接口,即通过其成员函数。实现方法有如下两种:


    1.在基类的声明中增加保护成员,将基类中提供给派生类访问的私有成员定义为保护成员。
    2.将需要访问基类私有成员的派生类成员函数声明为友元。


    [cpp]
    #include<iostream>
    using namespace std;
    class Base
    {
          friend class Derived2;//friend
          int x;
          protected://protected
          int y;
    };
    class Derived1:Base//private继承 
    {
    public:
       /*    int getx()
           {
               return x;//不合法,访问基类的private成员
               }*/
           int gety()
           {
               return y;//合法,访问基类的protected成员 
               }
    };
    class Derived2:Base//private继承 
    {
          public:
                 int getx();
          };
    int Derived2::getx()
    {
        return x;//友员直接访问基类的私有成员 
        }
        
    class Derived3:public Base//public继承 
    {
          public:
              /*  
              int   getx()
                 {
                       return x;//在这里还是不能访问,因为x是Base的private成员,只在Base里可以访问,在外面不可以被访问。
                       }
                       */
              int   gety()
                 {
                       return y;
                       }
          };
    int main()
    {
        int i;
        Derived2 ob;//没有带参数的构造函数或成员函数初始化x,构造函数赋个随机值给x 
        i=ob.getx();
        cout<<i<<endl;
        Derived3 ob3;
        i=ob3.gety();
        cout<<i<<endl;
        system("pause");
        }

    原文链接:http://www.2cto.com/kf/201209/152686.html

    ------------------------------------------------------------------------------------------------

  • 相关阅读:
    antd Upload的使用
    table 的使用方法
    标题前点的制作
    插件multiBtnList的使用
    render的写法
    数据请求
    实体类为什么使用包装类
    el-table中如何遍历数组中对象里的数组?
    关于hash的描述,hashcode etc
    Java集合框架详解
  • 原文地址:https://www.cnblogs.com/followyourdream/p/3288522.html
Copyright © 2011-2022 走看看