您好,登錄后才能下訂單哦!
如下所示:
#include <iostream> using namespace std; class a{ protected: int i; private: int j; public: int k; }; class b:public a{//派生訪問說明符對派生類內對其直接基類的訪問沒有影響,主要是用于控制派生類用戶(包括派生類的派生類)對基類成員的訪問權限 friend void f1(a a1){ cout<<a1.i;//錯誤,派生類的成員或友元不能訪問基類對象protected成員(protected特性) cout<<a1.j;//錯誤,派生類不能訪問基類private成員 cout<<a1.k;//正確 } friend void f1(b b1){ cout<<b1.i;//正確,派生類可以通過派生類對象訪問基類protected成員 cout<<b1.j;//錯誤,派生類不能訪問基類private成員 cout<<b1.k;//正確 } void f2(a a1){ cout<<a1.i;//錯誤,派生類的成員或友元不能訪問基類對象protected成員(protected特性) cout<<a1.j;//錯誤,派生類不能訪問基類private成員 cout<<a1.k;//正確 } void f2(b b1){ cout<<b1.i;//正確,派生類可以通過派生類對象訪問基類protected成員 cout<<b1.j;//錯誤,派生類不能訪問基類private成員 cout<<b1.k;//正確 } void f3(){ cout<<i;//正確,派生類可直接訪問基類protected成員 cout<<j;//錯誤,派生類不能訪問基類private成員 cout<<k;//正確 } }; class c:private a{} class e:protected a{} class f:public c{ void f4(){ cout<<k;//出錯,原因是f的直接基類c由a private派生 } } int main() { f f1; b b1; cout<<f1.k;//出錯,原因是f的直接基類c由a private派生 system("pause"); return 0; }
以上這篇C++派生訪問說明符小記(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。