有關C++承繼與友元、承繼與類型轉換詳解。本站提示廣大學習愛好者:(有關C++承繼與友元、承繼與類型轉換詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是有關C++承繼與友元、承繼與類型轉換詳解正文
實例如下:
#include <iostream> using namespace std; class a{ friend class pal; private: int i; protected: int j; public: int k; }; class b:public a{ protected: int l; }; class c:protected a{}; class d:private a{}; class e:public b{}; class pal{ public: void f(a a1){ cout<<a1.i;//正確,友元能訪問公有成員 } void f1(b b1){ cout<<b1.i;//正確,友元能訪問派生類的基類局部 cout<<b1.l;//出錯,pal類不是b的友元 } }; class deri_pal:public pal{ public: void f2(a a1){ cout<<a.i;//出錯,友元不能承繼 } }; int main() { a a1; b b1; c c1; d d1; e e1; a1=b1;//正確,只要公共承繼的派生類才干向基類轉換 a1=e1;//正確 a1=c1;//出錯,只要公共承繼的派生類才干向基類轉換 a1=d1;//出錯,只要公共承繼的派生類才干向基類轉換 system("pause"); return 0; }
對基類指針停止靜態綁定時,派生類必需是public派生而來,否則不能把基類指針綁定到派生類對象上
#include <iostream> using namespace std; class a{}; class b:public a{}; class c:protected a{}; class d:private a{}; class bb:public b{}; class cc:public c{}; class dd:public d{}; int main() { a a1;b b1;c c1;d d1;bb bb1;cc cc1;dd dd1; a* a1=&b1;//ok a* a2=&c1;//error a* a3=&d1;//error a* a4=&bb1;//ok a* a5=&cc1;//error a* a6=&dd1;//error system("pause"); return 0; }
以上這篇有關C++承繼與友元、承繼與類型轉換詳解就是分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。