有關C++繼承與友元、繼承與類型轉換詳解
更新時間:2017年01月10日 09:58:58 投稿:jingxian
下面小編就為大家?guī)硪黄嘘PC++繼承與友元、繼承與類型轉換詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
實例如下:
#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;
}
對基類指針進行動態(tài)綁定時,派生類必須是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++繼承與友元、繼承與類型轉換詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
C++實現(xiàn)inline hook的原理及應用實例
這篇文章主要介紹了C++實現(xiàn)inline hook的原理及應用,需要的朋友可以參考下2014-08-08
使用Objective-C獲取IPHONE手機IMSI序列號
這篇文章主要介紹了使用Objective-C獲取IPHONE手機IMSI序列號的方法以及通過IMSI序列號獲取運營商、手機號的方法,非常的實用,有需要的小伙伴可以參考下。2015-04-04
C++實現(xiàn)LeetCode(105.由先序和中序遍歷建立二叉樹)
這篇文章主要介紹了C++實現(xiàn)LeetCode(105.由先序和中序遍歷建立二叉樹),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07
詳解state狀態(tài)模式及在C++設計模式編程中的使用實例
這篇文章主要介紹了state狀態(tài)模式及在C++設計模式編程中的使用實例,在設計模式中策略用來處理算法變化,而狀態(tài)則是透明地處理狀態(tài)變化,需要的朋友可以參考下2016-03-03

