程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 派生類訪問基類的私有成員

派生類訪問基類的私有成員

編輯:C++入門知識

派生類不能直接訪問基類的私有成員,若要訪問必須使用基類的接口,即通過其成員函數。實現方法有如下兩種:


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.BkJia.com/kf/201209/152686.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved