程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 有關C++承繼與友元、承繼與類型轉換詳解

有關C++承繼與友元、承繼與類型轉換詳解

編輯:關於C++

有關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++承繼與友元、承繼與類型轉換詳解就是分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

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