自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺析C++類的繼承

開發(fā) 后端
在C++中,假如C++基類成員中的私有成員是別的類,但是對(duì)成員是不能訪問的,在進(jìn)行對(duì)C++基類進(jìn)行操作時(shí),需要很高的細(xì)心。

也許大家對(duì)與C++基類還不是很了解,看完本文后對(duì)您一定會(huì)大有幫助,下文除了學(xué)習(xí)C++基類的基本性質(zhì)外還對(duì)C++基類的新特性進(jìn)行全面研究,希望大家能夠找到自己想要的東西。

基類中的公有成員在public派生時(shí),不僅可以由派生類對(duì)象成員訪問,也可以由外部函數(shù)訪問;而在private派生時(shí),C++基類中的公有成員雖然允許派生類對(duì)象中的成員訪問,不允許外部訪問。

可是再派生出下一級(jí)時(shí),由于C++基類的所有成員已經(jīng)被私有化,其它類成員也不可再訪問。實(shí)現(xiàn)只許有派生血緣關(guān)系的對(duì)象成員訪問的方法,是在基類中使用具有另一種訪問屬性的成員——protected成員。

protected成員是一種血緣關(guān)系內(nèi)外有別的成員。它對(duì)派生對(duì)象而言,是公有成員,可以訪問;對(duì)血緣關(guān)系外部而言,與私有成員一樣被隱藏,此外,除了允許使用private與public兩種派生方式之外。C++還允許使用protected派生方式。現(xiàn)在將三種訪問屬性不同的成員經(jīng)三種派生后在派生類中訪問屬性的變化情況總結(jié)如下表,是對(duì)上一表格的增進(jìn)和補(bǔ)充。

派生方式 基類的public成員 基類的protected成員 基類的private成員 派生方式引起的訪問屬性變化概括
private派生 變?yōu)閜rivate成員 變?yōu)閜rivate成員 不可見 基類中的非私有成員都成為派生類中的私有成員
protected派生 變?yōu)閜rotected成員 變?yōu)閜rivate成員 不可見 基類中的非私有成員在派生類中的訪問屬性都降一級(jí)
public派生 仍為public成員 仍為protected成員 不可見 基類中的非私有成員在派生類中的訪問屬性保持不變

需要注意的是,C++基類的private成員無論經(jīng)過何種派生,在派生類中都是不可見的。

(1)友元函數(shù)

通常,類的私有成員只能由本類的成員訪問,外部函數(shù)只能訪問類的成員函數(shù),再由成員函數(shù)訪問類的私有成員。但是,如果在某個(gè)類定義中用friend聲明了一個(gè)外部函數(shù)(也許是其他類的一個(gè)成員)后,這個(gè)外部函數(shù)便可以例外地訪問該類的任何私有成員。用friend聲明了的外部函數(shù)稱為這個(gè)類的友元函數(shù)。

當(dāng)友元函數(shù)是另一個(gè)類的成員函數(shù)時(shí),應(yīng)當(dāng)注意以下幾點(diǎn):

A:友元函數(shù)作為一個(gè)類的成員函數(shù)時(shí),除應(yīng)當(dāng)在它所在的類定義中聲明之外,還應(yīng)當(dāng)在另一個(gè)類中聲明它的友元關(guān)系,聲明語句的格式為:

friend 函數(shù)類型函數(shù)所在類名::函數(shù)名(參數(shù)列表);

B:友元函數(shù)在引用本類對(duì)象的私有成員時(shí)無需本類對(duì)象的引用參數(shù),但在引用生命它是友元的類的對(duì)象中的私有成員時(shí)必須有友元類對(duì)象的引用參數(shù)。

C:一個(gè)類的成員函數(shù)作另一個(gè)類的友元函數(shù)時(shí),必須先定義,而不是僅僅聲明它。

使用友元函數(shù)直接訪問對(duì)象的私有成員,可以免去再調(diào)用類的成員函數(shù)所需的開銷。同時(shí),友元函數(shù)作為類的一個(gè)接口,對(duì)已經(jīng)設(shè)計(jì)好的類,只要增加一條聲明語句,便可以使用外部函數(shù)來補(bǔ)充它的功能,或架起不同類對(duì)象之間聯(lián)系的橋梁。然而,它同時(shí)也破壞了對(duì)象封裝與信息隱藏,使用時(shí)需要謹(jǐn)慎小心。

(2)友元類

也可以把一個(gè)類而不僅僅是一個(gè)函數(shù)聲明為另一個(gè)C++基類的友元類。這時(shí),只需先聲明它而不一定需要先定義。應(yīng)當(dāng)注意,友元關(guān)系是單向的,并且只在兩個(gè)類之間有效。即使類X是類Y的友元。

類Y是否是類X的友元也要看類X中是否有相應(yīng)的聲明。即友元關(guān)系不具有交換性。若類X是類Y的友元,類Y是類Z的友元,也不一定就說明類X是類Z的友元,即友元關(guān)系也不具有傳遞性。當(dāng)一個(gè)類要和另一個(gè)類協(xié)同工作時(shí),使一個(gè)類成為另一個(gè)類的友元類是很有用的。這時(shí)友元類中的每一個(gè)成員函數(shù)都成為了對(duì)方的友元函數(shù)。

責(zé)任編輯:chenqingxiang 來源: NET130
相關(guān)推薦

2010-01-20 09:32:30

C++類

2010-01-19 10:04:30

C++類

2010-01-21 09:34:57

C++語法

2010-01-27 16:05:06

C++堆棧

2010-01-19 18:51:17

C++類

2010-02-02 13:41:01

C++類繼承

2010-01-20 10:19:55

C++數(shù)組

2010-01-27 17:16:52

C++構(gòu)造函數(shù)

2017-07-21 09:40:35

Python類、繼承和多態(tài)

2010-01-26 14:35:11

C++關(guān)鍵字

2009-09-16 14:56:23

C++

2009-08-13 18:15:06

C#繼承構(gòu)造函數(shù)

2021-10-19 14:04:28

C++類型數(shù)字

2010-02-03 16:56:20

C++自定義類

2010-01-21 13:33:44

C++基類

2010-01-27 15:46:15

學(xué)習(xí)C++效率

2010-01-21 16:18:06

C++語言

2010-02-06 17:39:52

C++ strtok

2010-01-25 14:18:46

C++對(duì)象模型

2010-01-14 17:13:53

C++接口
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)