亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++中類的三種訪問權限解析:private、public與protect

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

C++類的三種訪問權限:private、public與protect

類與面向對象

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

定義一個類,其實就是把一堆實體的共同特征給提取出來。這種面向對象而不是面向過程的解決問題的思想,大大提升了復雜大型軟件的開發(fā)效率。

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

class Monster {

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

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

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

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

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

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

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

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

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

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

如果想要增加游戲難度,則可以增加怪物類中strike()和recover()調用頻率,或者提高health和attack的初始值,這些操作在C++中都很容易做到。這種面向對象的編程思想,讓一些從面向過程的角度看來十分抽象的行為,都能夠用C++比較輕松地實現(xiàn)。

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

三種訪問權限

private與public

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

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

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

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

關于類的訪問權限(控制權限)的區(qū)別

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

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

  • 在公共權限內的成員類內可以訪問,類外也可以訪問。
  • 在保護權限內的成員類內可以訪問,類外不可以訪問。
  • 在私有權限內的成員類內可以訪問,類外不可以訪問。

代碼示例

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

小結一下:通過對不同成員控制權限的了解和使用,在實際項目中可以根據(jù)自己的需求選擇相應的權限并寫上相應的接口對類內成員進行調用。

總結

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

相關文章

  • 數(shù)據(jù)結構與算法 排序(冒泡,選擇,插入)

    數(shù)據(jù)結構與算法 排序(冒泡,選擇,插入)

    這篇文章主要介紹了數(shù)據(jù)結構與算法 排序(冒泡,選擇,插入)的相關資料,這里對冒泡,選擇和插入都做有實例,需要的朋友可以參考下
    2017-07-07
  • C++?獲取當前正在運行函數(shù)的名稱

    C++?獲取當前正在運行函數(shù)的名稱

    本文主要介紹了C++獲取當前正在運行函數(shù)的名稱,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • C/C++實現(xiàn)重置文件時間戳

    C/C++實現(xiàn)重置文件時間戳

    這篇文章主要為大家詳細介紹了C/C++實現(xiàn)重置文件時間戳的相關資料,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以參考一下
    2023-11-11
  • C++中的對象指針總結

    C++中的對象指針總結

    以下是對C++中的對象指針進行了詳細的總結介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • OpenCV實戰(zhàn)之基于Hu矩實現(xiàn)輪廓匹配

    OpenCV實戰(zhàn)之基于Hu矩實現(xiàn)輪廓匹配

    這篇文章主要介紹了利用C++ OpenCV實現(xiàn)基于Hu矩的輪廓匹配,文中的示例代碼講解詳細,對我們學習OpenCV有一定的幫助,感興趣的可以學習一下
    2022-01-01
  • C語言實現(xiàn)繪制立體餅圖的示例代碼

    C語言實現(xiàn)繪制立體餅圖的示例代碼

    這篇文章主要為大家詳細介紹了如何使用C語言實現(xiàn)繪制立體餅圖,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • C++高性能服務器框架之線程模塊

    C++高性能服務器框架之線程模塊

    該模塊基于pthread實現(xiàn),sylar說,由于c++11中的thread也是由pthread封裝實現(xiàn)的,并且沒有提供讀寫互斥量,讀寫鎖,自旋鎖等,所以自己封裝了pthread,本文主要詳細介紹了C++高性能服務器框架中的線程模塊,需要的朋友可以參考下
    2023-06-06
  • 減小VC6編譯生成的exe文件的大小的方法

    減小VC6編譯生成的exe文件的大小的方法

    這篇文章主要介紹了減小VC6編譯生成的exe文件的大小的方法,需要的朋友可以參考下
    2015-01-01
  • Qt中parent()函數(shù)的具體使用

    Qt中parent()函數(shù)的具體使用

    你會發(fā)現(xiàn)幾乎所有的Qt類的構造函數(shù)都會有一個parent參數(shù),本文主要介紹了Qt中parent()函數(shù)的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • C語言實現(xiàn)學籍管理系統(tǒng)課程設計

    C語言實現(xiàn)學籍管理系統(tǒng)課程設計

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)學籍管理系統(tǒng)課程設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07

最新評論