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

C++中protected,private,public三者的區(qū)別詳解

 更新時間:2025年10月28日 10:43:39   作者:狂奔的sherry  
這篇文章主要介紹了C++中protected,private,public三者區(qū)別的相關(guān)資料,C++?中?public、private?和?protected?訪問修飾符的主要區(qū)別在于它們對類成員的訪問權(quán)限控制,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

 一、訪問權(quán)限(最核心區(qū)別)

訪問限定符類內(nèi)(成員函數(shù))可訪問派生類可訪問類外(對象)可訪問
public???
protected???
private???

private 最封閉,protected 只對子類開放,public 對所有人開放。

二、示例:類內(nèi)、子類、外部訪問

#include <iostream>

class Base {
public:
    int pub = 1;          // 公開成員
protected:
    int prot = 2;         // 受保護(hù)成員
private:
    int priv = 3;         // 私有成員
};

class Derived : public Base {
public:
    void show() {
        std::cout << pub << "\n";   // ? 可訪問
        std::cout << prot << "\n";  // ? 可訪問(protected對子類可見)
        // std::cout << priv << "\n";  // ? 不可訪問(private對子類隱藏)
    }
};

int main() {
    Base b;
    Derived d;

    std::cout << b.pub << "\n";     // ? public 對外可訪問
    // std::cout << b.prot << "\n";  // ? protected 不可外部訪問
    // std::cout << b.priv << "\n";  // ? private 不可外部訪問
}

三、繼承時的訪問級別變化

繼承時,父類成員會因為繼承方式不同而改變可見性。

(?? 這點容易混)

繼承方式父類的 public 成員在子類中變成父類的 protected 成員在子類中變成父類的 private 成員
public 繼承publicprotected不可訪問
protected 繼承protectedprotected不可訪問
private 繼承privateprivate不可訪問

舉例:

class Base {
public:
    int a;
protected:
    int b;
private:
    int c;
};

class Derived1 : public Base {};
class Derived2 : protected Base {};
class Derived3 : private Base {};
成員Derived1中訪問級別Derived2中訪問級別Derived3中訪問級別
a(public)? public? protected? private
b(protected)? protected? protected? private
c(private)? 不可訪問? 不可訪問? 不可訪問

 四、實際應(yīng)用場景舉例

關(guān)鍵字典型用法場景說明
public對外提供接口類的外部接口函數(shù)(如 getter/setter、API)
protected給子類繼承用父類希望子類能訪問但外部不能(模板方法、基類輔助函數(shù))
private封裝內(nèi)部實現(xiàn)數(shù)據(jù)成員、工具函數(shù),不希望外界訪問

示例:封裝與繼承

class Animal {
public:
    void eat() { std::cout << "eat\n"; } // 公共接口
protected:
    void breathe() { std::cout << "breathe\n"; } // 子類能用
private:
    void think() { std::cout << "think\n"; } // 僅自己能用
};

class Dog : public Animal {
public:
    void run() {
        eat();      // ? 繼承自public
        breathe();  // ? 繼承自protected
        // think(); // ? 無法訪問
    }
};

五、總結(jié)口訣

限定符誰能訪問常用位置用途
public所有人類接口提供功能
protected自己 + 子類基類方法繼承擴(kuò)展
private僅自己數(shù)據(jù)成員封裝隱藏

口訣:

public 人人能看,
protected 兒孫能看,
private 自家能看。

protected 用來干嘛?

用來讓基類保留“對子類開放”的接口,而仍然對外部隱藏。
比如虛函數(shù)模板方法模式(Template Method)。

在模板方法模式中,父類定義流程,子類填細(xì)節(jié)。
控制繼承范圍:讓子類訪問內(nèi)部工具函數(shù)。

防止外部直接創(chuàng)建或銷毀資源

類之間的協(xié)作,如框架開發(fā)。

class Widget {
public:
    void draw();         // 對外接口
protected:
    virtual void paint(); // 由子類重寫的繪制邏輯
};

public / protected / private 繼承的區(qū)別?

影響的是基類成員在派生類中的訪問級別,而不是繼承數(shù)量。

總結(jié)

到此這篇關(guān)于C++中protected,private,public三者區(qū)別的文章就介紹到這了,更多相關(guān)protected,private,public區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實現(xiàn)圖書管理系統(tǒng)簡易版

    C++實現(xiàn)圖書管理系統(tǒng)簡易版

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)圖書管理系統(tǒng)簡易版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳解C++中的異常和錯誤處理機(jī)制

    詳解C++中的異常和錯誤處理機(jī)制

    在C++編程中,異常處理和錯誤處理機(jī)制是非常重要的,它們可以幫助程序員有效地處理運(yùn)行時錯誤和異常情況,本文就來介紹一下C++中的異常處理和錯誤處理機(jī)制吧
    2023-05-05
  • 解決C++中事件不響應(yīng)的方法詳解

    解決C++中事件不響應(yīng)的方法詳解

    本篇文章是對C++事件不響應(yīng)的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 詳談c++11 final與override說明符

    詳談c++11 final與override說明符

    下面小編就為大家?guī)硪黄斦刢++11 final與override說明符。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C++實現(xiàn)假裝藍(lán)屏整蠱小程序

    C++實現(xiàn)假裝藍(lán)屏整蠱小程序

    因為工作的需要,有時候我們離開時并不想讓別人看到我們電腦的內(nèi)容,所以本文為大家分享了一個基于C++實現(xiàn)的假裝藍(lán)屏的小程序,需要的可以參考下
    2023-06-06
  • C++遞歸算法實例代碼

    C++遞歸算法實例代碼

    這篇文章主要介紹了C++遞歸算法實例代碼,還是比較不錯的,運(yùn)用了遞歸算法解決相關(guān)問題,這里分享給大家,需要的朋友可以參考下。
    2017-11-11
  • C/C++?string.h庫中memcpy()和memmove()的使用

    C/C++?string.h庫中memcpy()和memmove()的使用

    memcpy與memmove的目的都是將N個字節(jié)的源內(nèi)存地址的內(nèi)容拷貝到目標(biāo)內(nèi)存地址中,本文主要介紹了C/C++?string.h庫中memcpy()和memmove()的使用,感興趣的可以了解一下
    2023-12-12
  • 詳解C語言-二級指針三種內(nèi)存模型

    詳解C語言-二級指針三種內(nèi)存模型

    這篇文章主要介紹了詳解C語言-二級指針三種內(nèi)存模型的相關(guān)知識,文中代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 關(guān)于VS2022不能使用<bits/stdc++.h>的解決方案(萬能頭文件)

    關(guān)于VS2022不能使用<bits/stdc++.h>的解決方案(萬能頭文件)

    #include<bits/stdc++.h>包含了目前 C++ 所包含的所有頭文件,又稱萬能頭文件,那么如何在VS2022中使用萬能頭呢?下面小編給大家代理了關(guān)于VS2022不能使用<bits/stdc++.h>的解決方案(萬能頭文件),感興趣的朋友一起看看吧
    2022-03-03
  • C語言大廠面試技巧及strcpy()函數(shù)示例詳解

    C語言大廠面試技巧及strcpy()函數(shù)示例詳解

    這篇文章主要為大家介紹了C語言面試技巧,以strcpy()函數(shù)為示例進(jìn)行分析詳解,有需要沖刺大廠的朋友們可以借鑒參考下,希望能夠有所幫助
    2021-11-11

最新評論

武清区| 新巴尔虎右旗| 阿克| 普洱| 石屏县| 辽中县| 清远市| 景宁| 嵊州市| 江永县| 开远市| 陈巴尔虎旗| 大同县| 尼勒克县| 巴彦县| 敦化市| 诏安县| 通辽市| 麻阳| 天长市| 镇安县| 潜江市| 永康市| 汤阴县| 安多县| 松原市| 曲周县| 崇义县| 萝北县| 洛宁县| 涿州市| 徐水县| 梁山县| 沁阳市| 宣武区| 黄大仙区| 定陶县| 乌兰察布市| 大港区| 米易县| 泗阳县|