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

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

  • 相关阅读:
    Document
    Document
    Document
    Document
    #开头的 十六进制颜色代码(#1B253A) 转成 rgba (rgba(27,37,58,0.5)) 格式
    网上找的,用 css 实现的酷炫效果
    git命令:全局设置用户名邮箱配置
    用 ice 搭建 react-hook 项目
    每天学点英语单词第一篇
    umi -- 震惊!umi 路由竟然如此强大!
  • 原文地址:https://www.cnblogs.com/followyourdream/p/3288522.html
Copyright © 2011-2022 走看看