程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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"); 
    } 

 

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