最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中類的三種訪問權(quán)限解析:private、public與protect

 更新時間:2022年11月25日 10:26:15   作者:「已注銷」  
這篇文章主要介紹了C++中類的三種訪問權(quán)限解析:private、public與protect,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

C++類的三種訪問權(quán)限:private、public與protect

類與面向?qū)ο?/h3>

C++中可以定義一個類。

定義一個類,其實(shí)就是把一堆實(shí)體的共同特征給提取出來。這種面向?qū)ο蠖皇敲嫦蜻^程的解決問題的思想,大大提升了復(fù)雜大型軟件的開發(fā)效率。

比如在游戲開發(fā)中,需要生成一批屬性相近、行為相似的怪物,那我們可以定義一個怪物類:

class Monster {

??? ?private: ?? ??? ?//私有類型成員

??? ??? ?int attack = 15;?? ?//攻擊力屬性

??? ?public:?? ??? ??? ?//公有類型成員
? ?? ?
? ?? ??? ?int health = 100;?? ?//生命值屬性

??? ??? ?void strike ( ) { //怪物對玩家進(jìn)行一次攻擊

??? ??? ?......
?? ??? ?}?? ?

??? ??? ?void recover( ) { //怪物回血,并提高自身攻擊力

??? ??? ??? ?if (health <= 95) health += 5;
? ?? ??? ??? ?attack += 5;
?? ??? ?}??

我們知道,一個類中可以有兩種成員在里面:類中成員變量和類中成員函數(shù)。成員變量用于描述類的靜態(tài)屬性,如上述的 health 和 attack;成員函數(shù)其實(shí)就是類的動態(tài)行為,比如上述的strike()和recover()。

補(bǔ)充一下:函數(shù),本質(zhì)上一串能夠完成特定行為的代碼。

例如其中strike()可以使怪物對玩家造成傷害(改變玩家生命值);recover()可以恢復(fù)一定量的生命值并提高攻擊力。

如果想要增加游戲難度,則可以增加怪物類中strike()和recover()調(diào)用頻率,或者提高h(yuǎn)ealth和attack的初始值,這些操作在C++中都很容易做到。這種面向?qū)ο蟮木幊趟枷?,讓一些從面向過程的角度看來十分抽象的行為,都能夠用C++比較輕松地實(shí)現(xiàn)。

那么,如此便夠了么?僅僅用成員變量和成員函數(shù)便可以完成許多復(fù)雜操作,我們不應(yīng)該竊喜么?

三種訪問權(quán)限

private與public

上述代碼中的 private 和 public 是怎么回事?他們的存在有什么意思?

  • private代表類內(nèi)私有成員,僅有類內(nèi)函數(shù)可以訪問private,類外一切函數(shù)(包括繼承者)均不可訪問private成員。
  • public代表類內(nèi)公有成員,無論類內(nèi)還是類外(包括繼承者)的函數(shù)都可以訪問public成員。

通過這兩個關(guān)鍵字,我們實(shí)現(xiàn)了對類內(nèi)成員的訪問權(quán)限控制。在一些特定情況下,訪問權(quán)限控制十分方便。比如在上述代碼中,我們將怪物的攻擊力attack設(shè)置為private,這樣就只有類內(nèi)的recover()函數(shù)能夠訪問attack屬性;將生命值health設(shè)置為public,于是當(dāng)玩家對怪物進(jìn)行攻擊時,health也能被玩家類player的攻擊函數(shù)訪問而減小。

  • 除此以外,還有另一個關(guān)鍵字protect(即保護(hù)成員),主要用在類的繼承中。如果有任何變量或函數(shù)被聲明為protect,那么這些保護(hù)成員可以被類的繼承者中成員函數(shù)訪問,而無法被類外任何函數(shù)訪問。因?yàn)檫@個關(guān)鍵字涉及繼承機(jī)制,稍微有點(diǎn)復(fù)雜,所以我們留到下次。

關(guān)于類的訪問權(quán)限(控制權(quán)限)的區(qū)別

C++中類的訪問權(quán)限有三種,分別是public公共權(quán)限,protected保護(hù)權(quán)限,private私有權(quán)限。將成員屬性和成員方法放到不同的訪問權(quán)限中加以實(shí)際控制。

三種成員控制權(quán)限的區(qū)別

  • 在公共權(quán)限內(nèi)的成員類內(nèi)可以訪問,類外也可以訪問。
  • 在保護(hù)權(quán)限內(nèi)的成員類內(nèi)可以訪問,類外不可以訪問。
  • 在私有權(quán)限內(nèi)的成員類內(nèi)可以訪問,類外不可以訪問。

代碼示例

#include <iostream>
using namespace std;
class peo {
public: ? ? ? ? ? ? ? ?//公共權(quán)限 類內(nèi)類外可以訪問
?? ?string name;
protected: ? ? ? ? ? ? //保護(hù)權(quán)限,類內(nèi)可以訪問,類外不可以訪問
?? ?string House;
private: ? ? ? ? ? ? ? //私有權(quán)限,類內(nèi)可以訪問,類外不可以訪問
?? ?string car;
public:
?? ?void lei() {
?? ??? ?name = "老張";
?? ??? ?House = "張家"; ? ? ? ?//保護(hù)權(quán)限的類內(nèi)訪問
?? ??? ?car = "長城"; ? ? ? ? ?//私有權(quán)限的類內(nèi)訪問
?? ?}
};
?
int main() {
?? ?peo p;
?? ?p.name = "小張"; ? ? ? ? ? ? ? ?
?? ??? ?//p.house="小張家"; 保護(hù)權(quán)限類外不可以訪問
?? ??? ?//p.car="長城plus"; 私有權(quán)限類外不可以訪問
?
?? ??? ?return 0;
}

小結(jié)一下:通過對不同成員控制權(quán)限的了解和使用,在實(shí)際項(xiàng)目中可以根據(jù)自己的需求選擇相應(yīng)的權(quán)限并寫上相應(yīng)的接口對類內(nèi)成員進(jìn)行調(diào)用。

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言深入淺出講解順序表的實(shí)現(xiàn)

    C語言深入淺出講解順序表的實(shí)現(xiàn)

    線性表是最簡單的數(shù)據(jù)結(jié)構(gòu),而順序表又是最簡單的線性表,其基本思想是用一段地址連續(xù)的儲存單元依次存儲線性表的數(shù)據(jù)元素,比如我們常用的一維數(shù)組,下面代碼實(shí)現(xiàn)了順序表的定義以及基本操作
    2022-04-04
  • 淺析c與c++中struct的區(qū)別

    淺析c與c++中struct的區(qū)別

    c與c++中struct的區(qū)別你是否了解,下面小編就詳細(xì)的為大家介紹一下
    2013-07-07
  • opencv檢測直線方法之形態(tài)學(xué)方法

    opencv檢測直線方法之形態(tài)學(xué)方法

    這篇文章主要為大家詳細(xì)介紹了opencv檢測直線方法之形態(tài)學(xué)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Qt中QPainter與坐標(biāo)的使用

    Qt中QPainter與坐標(biāo)的使用

    本文主要介紹了Qt中QPainter與坐標(biāo)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • C語言從零探索函數(shù)的知識

    C語言從零探索函數(shù)的知識

    函數(shù)是一組一起執(zhí)行一個任務(wù)的語句。每個 C 程序都至少有一個函數(shù),即主函數(shù) main() ,所有簡單的程序都可以定義其他額外的函數(shù),讓我們一起來了解它
    2022-04-04
  • C語言數(shù)據(jù)結(jié)構(gòu)與算法之時間空間復(fù)雜度入門

    C語言數(shù)據(jù)結(jié)構(gòu)與算法之時間空間復(fù)雜度入門

    這篇文章主要為大家介紹了C語言數(shù)據(jù)結(jié)構(gòu)與算法之時間空間復(fù)雜度的入門教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • c語言中用位運(yùn)算實(shí)現(xiàn)加法技巧介紹

    c語言中用位運(yùn)算實(shí)現(xiàn)加法技巧介紹

    用位運(yùn)算實(shí)現(xiàn)加法也就是計算機(jī)用二進(jìn)制進(jìn)行運(yùn)算,32位的CPU只能表示32位內(nèi)的數(shù),這里先用1位數(shù)的加法來進(jìn)行,需要的朋友可以參考下
    2012-11-11
  • C++中priority_queue與仿函數(shù)實(shí)現(xiàn)方法

    C++中priority_queue與仿函數(shù)實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于C++中priority_queue與仿函數(shù)實(shí)現(xiàn)的相關(guān)資料,優(yōu)先級隊列是一種容器適配器,其底層通常采用vector容器,并通過堆算法來維護(hù)元素的順序,文中通過代碼介紹的非常詳細(xì)《》需要的朋友可以參考下
    2024-10-10
  • 淺析C++中的重載,隱藏和覆蓋

    淺析C++中的重載,隱藏和覆蓋

    在C++語言中,函數(shù)扮演著很重要的角色,不管面向過程設(shè)計,還是基于對象設(shè)計。本文主要為大家介紹了函數(shù)中重載、覆蓋和隱藏的相關(guān)知識,感興趣的小伙伴可以了解一下
    2022-12-12
  • C++超詳細(xì)分析優(yōu)化排序算法之堆排序

    C++超詳細(xì)分析優(yōu)化排序算法之堆排序

    堆是計算機(jī)科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱,通常是一個可以被看做一棵完全二叉樹的數(shù)組對象。而堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計的一種排序算法。本文將通過圖片詳細(xì)介紹堆排序,需要的可以參考一下
    2023-02-02

最新評論

连州市| 靖边县| 利津县| 昌都县| 定陶县| 林口县| 武山县| 清原| 綦江县| 修水县| 大关县| 青浦区| 阳春市| 卢龙县| 宁都县| 溆浦县| 安塞县| 黑龙江省| 宣武区| 沂南县| 鹤峰县| 崇明县| 高密市| 金阳县| 永德县| 平利县| 芒康县| 略阳县| 扎囊县| 宁南县| 陆丰市| 天峨县| 耒阳市| 新野县| 福鼎市| 萍乡市| 清水河县| 崇明县| 丹东市| 庄河市| 贵德县|