日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7.类的访问控制和继承

發(fā)布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.类的访问控制和继承 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在C++中,我們使用訪問說明符加強類的封裝性。

訪問說明符有:public、private、protected

1)定義在public說明符之后的成員在整個程序內可以被訪問,public成員定義類的接口

2)定義在private說明符之后的成員可以只能由類的接口訪問,private部分封裝了(隱藏了)類的實現(xiàn)細節(jié)。

3)由于我們定義的類希望某些成員可以在類的繼承過程中和派生類分享,而不被其他公共部分訪問,因此便設定protected說明符。定義在protected訪問符之后的成員,常用于派生類和友元。


什么是友元?

友元分友元函數(shù)和友元類。類與類或函數(shù)之間要進行某些相關操作,就要用到友元!有時需要定義一些函數(shù),這些函數(shù)不是類的一部分,但又需要頻繁地訪問類的數(shù)據(jù)成員,這時可以將這些函數(shù)定義為該類的友元函數(shù)。除了友元函數(shù)外,還有友元類,兩者統(tǒng)稱為友元。?如果一個類指定了友元類,則友元類的成員函數(shù)可以訪問包括此類非公有成員在內的所有成員!友元能夠使得普通函數(shù)直接訪問類的保護數(shù)據(jù),避免了類成員函數(shù)的頻繁調用,可以節(jié)約處理器開銷,提高程序的效率,但所矛盾的是,即使是最大限度的保護,同樣也破壞了類的封裝特性,這即是友元的缺點。

使用友元類時注意:
(1) 友元關系不能被繼承。?
(2) 友元關系是單向的,不具有交換性。若類B是類A的友元,類A不一定是類B的友元,要看在類中是否有相應的聲明。
(3) 友元關系不具有傳遞性。若類B是類A的友元,類C是B的友元,類C不一定是類A的友元,同樣要看類中是否有相應的聲明。

?


其實在C++中,struct和class的差別也在于此!class可以看成是struct的加強版

struct的默認訪問說明符是public,默認public繼承;class的默認訪問說明符是private,默認private繼承


在繼承機制中,有派生訪問說明符。分為:public、private、protected

要深刻理解下面這兩句話:

1)派生訪問說明符對于派生類的成員(及友元)能否訪問其直接基類成員沒有什么影響。對基類成員的訪問權限只和基類的訪問說明符有關。

2)派生訪問說明符的目的是控制派生類對象(包括派生的派生)對于基類成員的訪問權限。(查看本博客C++模塊第8篇文章)

?

簡單測試一下:

using namespace std; class A {int a = 3; public:int fun() { int b = a; cout << a << endl; return a; } };class B:public A {using A::fun; public:void fun(int c) { int b = fun()+c; cout << b << endl; } };int main() {B b;b.fun(6);system("pause");return 0; }

總的來說,派生類的對象想要訪問基類的某個成員,你得首先看看派生類對于基類的繼承形式是怎樣的!基類在不同的繼承形式下,它的成員在派生類中具有不同的訪問屬性!(查看本博客C++模塊第8篇文章);而派生類的成員或者友元要訪問其基類的成員函數(shù)時,只與基類中的訪問說明符有關!

總結

以上是生活随笔為你收集整理的7.类的访问控制和继承的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。