溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C++派生訪問說明符小記(推薦)

發(fā)布時間:2020-09-19 15:55:12 來源:腳本之家 閱讀:141 作者:jingxian 欄目:編程語言

如下所示:

#include <iostream> 

using namespace std; 

class a{
protected:
	int i;
private:
	int j;
public:
	int k;
};



class b:public a{//派生訪問說明符對派生類內(nèi)對其直接基類的訪問沒有影響,主要是用于控制派生類用戶(包括派生類的派生類)對基類成員的訪問權(quán)限
	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++派生訪問說明符小記(推薦)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI