哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++中類(lèi)的繼承訪問(wèn)級(jí)別學(xué)習(xí)總結(jié)(二)

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-24 16:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

上一篇文章我們介紹了c++中類(lèi)的繼承學(xué)習(xí)總結(jié);今天我們繼續(xù)來(lái)分享c++中類(lèi)的繼承中的訪問(wèn)級(jí)別的學(xué)習(xí)總結(jié)。

一、繼承中的訪問(wèn)級(jí)別學(xué)習(xí):

1、子類(lèi)是否可以直接訪問(wèn)父類(lèi)的私用成員嗎?

從面向?qū)ο罄碚摻嵌葋?lái)看:

子類(lèi)擁有父類(lèi)的一切屬性和行為,也就是說(shuō),子類(lèi)能夠直接訪問(wèn)父類(lèi)的私有成員。

從c++的語(yǔ)法角度看:

外界不能直接訪問(wèn)類(lèi)的private成員,也就是說(shuō),子類(lèi)不能直接訪問(wèn)父類(lèi)的私用成員。

代碼示例:

#include <iostream>
#include <string>
using namespace std;
class Parent

private:
int mv;
public:
Parent()

mv = 100;


int value()

return mv;

};
class Child : public Parent

public:
int addValue(int v)

mv = mv + v; // 如何訪問(wèn)父類(lèi)的非公有成員

};
int main()

return 0;

輸出結(jié)果:

root@txp-virtual-machine:/home/txp# g++ test.cpp
test.cpp: In member function ‘int Child::addValue(int)’:
test.cpp:9:9: error: ‘int Parent::mv’ is private
int mv;

test.cpp:27:9: error: within this context
mv = mv + v; // 如何訪問(wèn)父類(lèi)的非公有成員

test.cpp:9:9: error: ‘int Parent::mv’ is private
int mv;

test.cpp:27:14: error: within this context
mv = mv + v; // 如何訪問(wèn)父類(lèi)的非公有成員

注解:我們可以看到子類(lèi)不能直接訪問(wèn)到父類(lèi)里面的屬性

2、繼承中的訪問(wèn)級(jí)別關(guān)系

面向?qū)ο笾械脑L問(wèn)級(jí)別不只是public和private

可以定義protected訪問(wèn)級(jí)別

關(guān)鍵字protect的意義

--修飾的成員不能被外界直接訪問(wèn)

-- 修飾的成員可以被子類(lèi)直接訪問(wèn)

代碼實(shí)現(xiàn)

#include <iostream>
#include <string>
using namespace std;
class Parent

protected:
int mv;
public:
Parent()

mv = 100;


int value()

return mv;

};
class Child : public Parent

public:
int addValue(int v)

mv = mv + v;

};
int main()

Parent p;

cout << "p.mv = " << p.value() << endl;

p.mv = 1000; // error

Child c;

cout << "c.mv = " << c.value() << endl;

c.a(chǎn)ddValue(50);

cout << "c.mv = " << c.value() << endl;

c.mv = 10000; // error

return 0;

運(yùn)行結(jié)果:

root@txp-virtual-machine:/home/txp# g++ test.cpp
test.cpp: In function ‘int main()’:
test.cpp:9:9: error: ‘int Parent::mv’ is protected
int mv;

test.cpp:37:8: error: within this context
p.mv = 1000; // error

test.cpp:9:9: error: ‘int Parent::mv’ is protected
int mv;

test.cpp:47:7: error: within this context
c.mv = 10000; // error

注解:這里我們把父類(lèi)的屬性private修改成protect,這里我們注意到在子類(lèi)里面的方法中是可以使用父類(lèi)中的屬性mv了,只不過(guò)在int main()函數(shù)中,使用父類(lèi)和子類(lèi)定義的對(duì)象,均不可以對(duì)父類(lèi)中的屬性mv進(jìn)行訪問(wèn),這一點(diǎn)要注意。

3、為什么面向?qū)ο笾行枰猵rotect?

我們還是用生活中的例子來(lái)理解,每個(gè)人的個(gè)人隱私,是不能泄露的,也就是我們c++中的private關(guān)鍵字;而你身上穿的衣服,每個(gè)人都可以知道,也就是c++中的public關(guān)鍵字;最后我們的protect關(guān)鍵字,為啥c++中會(huì)需要它,我想還是跟生活中有關(guān)(所以說(shuō),面向?qū)ο蟮?a target="_blank">編程,非常貼近生活),比如說(shuō),家庭開(kāi)會(huì),有些事情就不能讓外人知道,但是自己家人就可以知道,所以這跟protect關(guān)鍵字的用法非常像,也就是說(shuō),protect關(guān)鍵鑒于private和public之間。

4、定義類(lèi)時(shí)訪問(wèn)級(jí)別的選擇:

注解:從圖中我們可以發(fā)現(xiàn),當(dāng)有發(fā)生繼承關(guān)系時(shí),就考慮使用protect關(guān)鍵字

5、組合和繼承的綜合運(yùn)用

說(shuō)明:Object這個(gè)類(lèi)是被用來(lái)繼承的;Line和Point兩個(gè)類(lèi)進(jìn)行組合。

代碼示例:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;
class Object

protected:
string mName;
string mInfo;
public:
Object()

mName = "Object";
mInfo = "";

string name()

return mName;

string info()

return mInfo;

};
class Point : public Object

private:
int mX;
int mY;
public:
Point(int x = 0, int y = 0)

ostringstream s;

mX = x;
mY = y;
mName = "Point";

s << "P(" << mX << ", " << mY << ")";

mInfo = s.str();

int x()

return mX;

int y()

return mY;

};
class Line : public Object

private:
Point mP1;
Point mP2;
public:
Line(Point p1, Point p2)

ostringstream s;

mP1 = p1;
mP2 = p2;
mName = "Line";

s << "Line from " << mP1.info() << " to " << mP2.info();

mInfo = s.str();

Point begin()

return mP1;

Point end()

return mP2;

};
int main()

Object o;
Point p(1, 2);
Point pn(5, 6);
Line l(p, pn);

cout << o.name() << endl;
cout << o.info() << endl;

cout << endl;

cout << p.name() << endl;
cout << p.info() << endl;

cout << endl;

cout << l.name() << endl;
cout << l.info() << endl;

return 0;

輸出結(jié)果:

root@txp-virtual-machine:/home/txp# ./a.out
Object
Point
P(1, 2)
Line
Line from P(1, 2) to P(5, 6)

二、總結(jié):

面向?qū)ο笾械脑L問(wèn)級(jí)別不只是public和private

protected修飾的成員不能別外界所訪問(wèn)

protected使得子類(lèi)能夠訪問(wèn)父類(lèi)的成員

protected關(guān)鍵字為了繼承而專(zhuān)門(mén)設(shè)計(jì)的

沒(méi)有protected關(guān)鍵字就無(wú)法完成真正代碼意義上的代碼復(fù)用了

好了,今天的分享就到這里,如果文章中有錯(cuò)誤或者不理解的地方,可以交流互動(dòng),一起進(jìn)步。我是txp,下期見(jiàn)!

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 可編程邏輯
    +關(guān)注

    關(guān)注

    7

    文章

    528

    瀏覽量

    45458
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2124

    瀏覽量

    77351
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C++與lua聯(lián)合編程

    在現(xiàn)代軟件工程的龐大架構(gòu),純粹的 C++ 與動(dòng)態(tài)腳本語(yǔ)言之間的關(guān)系,早已演變成一場(chǎng)精密的“商業(yè)分工”。C++ 扮演著提供極致性能的“底層重工業(yè)”,而 Lua 則充當(dāng)著實(shí)現(xiàn)靈活業(yè)務(wù)邏輯的“輕量級(jí)
    發(fā)表于 04-19 16:27

    C++:const 的空間,常量也能占內(nèi)存?

    5g.5jh.dg8sg.cnJIWWQc++語(yǔ)言 c++語(yǔ)言5g.Zq2.dg8sg.cnJIWWQc++語(yǔ)言 def lock_tetromino(self): \"\"\"將落地的方塊鎖定到網(wǎng)格
    發(fā)表于 04-16 19:19

    keil實(shí)現(xiàn)cc++混合編程

    參考touchgfx生成的代碼,發(fā)現(xiàn)了一個(gè)不需要添加--cpp11 參數(shù)的解決方法,具體操作如下。 一、創(chuàng)建一個(gè)空白的C文件和頭文件在頭文件定義c++文件需要調(diào)用的函數(shù),如圖所示
    發(fā)表于 01-26 08:58

    C語(yǔ)言與C++的區(qū)別及聯(lián)系

    缺點(diǎn):性能比面向過(guò)程低。 、具體語(yǔ)言上的區(qū)別 1、關(guān)鍵字的不同 C語(yǔ)言有32個(gè)關(guān)鍵字;C++有63個(gè)關(guān)鍵字。 2、后綴名不同 C源文件后綴.
    發(fā)表于 12-24 07:23

    CC++之間的聯(lián)系

    控制能力,這一點(diǎn)與C語(yǔ)言相似,使得它們?cè)谙到y(tǒng)編程、嵌入式系統(tǒng)等領(lǐng)域都得到廣泛應(yīng)用。 3、發(fā)展歷程: C++正是在C語(yǔ)言的基礎(chǔ)上逐步發(fā)展起來(lái)的,C++的設(shè)計(jì)初衷是作為一種“帶
    發(fā)表于 12-11 06:51

    C語(yǔ)言和C++之間的區(qū)別是什么

    區(qū)別 1、面向?qū)ο缶幊?(OOP): C語(yǔ)言是一種面向過(guò)程的語(yǔ)言,它強(qiáng)調(diào)的是通過(guò)函數(shù)將任務(wù)分解為一系列步驟進(jìn)行執(zhí)行。 C++C語(yǔ)言的基礎(chǔ)上擴(kuò)展了面向?qū)ο蟮奶匦?,支?b class='flag-5'>類(lèi)(class)
    發(fā)表于 12-11 06:23

    C++程序異常的處理機(jī)制

    1、什么是異常處理? 有經(jīng)驗(yàn)的朋友應(yīng)該知道,在正常的CC++編程過(guò)程難免會(huì)碰到程序不按照原本設(shè)計(jì)運(yùn)行的情況。 最常見(jiàn)的有除法分母為零,數(shù)組越界,內(nèi)存分配失效、打開(kāi)相應(yīng)文件失敗等等。 一個(gè)程序
    發(fā)表于 12-02 07:12

    Cortex-M級(jí)別的轉(zhuǎn)換

    一、 簡(jiǎn)述 Cortex-M 里面有特權(quán)級(jí)別的概念,不同級(jí)別可以設(shè)定不同的權(quán)限,如何轉(zhuǎn)換特權(quán)級(jí)別基本是本章的內(nèi)容。 、操作模式 ARM M 核操作模式有兩個(gè): 線程(Thread)模
    發(fā)表于 11-19 07:32

    圖解碼說(shuō)-六大UML類(lèi)圖關(guān)系(依賴,繼承,實(shí)現(xiàn),關(guān)聯(lián),聚合,組合)

    UML 類(lèi)圖是面向?qū)ο笤O(shè)計(jì)的 “施工圖”,而依賴、繼承、實(shí)現(xiàn)、關(guān)聯(lián)、聚合、組合這六大關(guān)系,就是圖中定義類(lèi)類(lèi)互動(dòng)規(guī)則的核心 “語(yǔ)法”。掌握它們,就能快速看懂
    的頭像 發(fā)表于 11-05 09:03 ?882次閱讀
    圖解碼說(shuō)-六大UML<b class='flag-5'>類(lèi)</b>圖關(guān)系(依賴,<b class='flag-5'>繼承</b>,實(shí)現(xiàn),關(guān)聯(lián),聚合,組合)

    技能+1!如何在樹(shù)莓派上使用C++控制GPIO?

    和PiGPIO等庫(kù),C++可用于編程控制樹(shù)莓派的GPIO引腳。它提供了更好的性能和控制能力,非常適合對(duì)速度和精度要求較高的硬件項(xiàng)目。在樹(shù)莓派社區(qū),關(guān)于“Python
    的頭像 發(fā)表于 08-06 15:33 ?4452次閱讀
    技能+1!如何在樹(shù)莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    【HarmonyOS 5】鴻蒙的UIAbility詳解(

    【HarmonyOS 5】鴻蒙的UIAbility詳解() ##鴻蒙開(kāi)發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類(lèi)應(yīng)用 (金融理財(cái)# 一、前言 今天我們繼續(xù)深入講解
    的頭像 發(fā)表于 07-11 18:17 ?1023次閱讀
    【HarmonyOS 5】鴻蒙<b class='flag-5'>中</b>的UIAbility詳解(<b class='flag-5'>二</b>)

    基于LockAI視覺(jué)識(shí)別模塊:C++目標(biāo)檢測(cè)

    本文檔基于瑞芯微RV1106的LockAI凌智視覺(jué)識(shí)別模塊,通過(guò)C++語(yǔ)言做的目標(biāo)檢測(cè)實(shí)驗(yàn)。本文檔展示了如何使用lockzhiner_vision_module::PaddleDet類(lèi)進(jìn)行目標(biāo)檢測(cè),并通過(guò)lockzhiner_vision_module::Visualiz
    的頭像 發(fā)表于 06-06 13:56 ?1001次閱讀
    基于LockAI視覺(jué)識(shí)別模塊:<b class='flag-5'>C++</b>目標(biāo)檢測(cè)

    主流的 MCU 開(kāi)發(fā)語(yǔ)言為什么是 C 而不是 C++?

    在單片機(jī)的地界兒里,C語(yǔ)言穩(wěn)坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩不轉(zhuǎn)。先說(shuō)內(nèi)存這道坎兒。您當(dāng)stm32f4的256kRAM
    的頭像 發(fā)表于 05-21 10:33 ?1185次閱讀
    主流的 MCU 開(kāi)發(fā)語(yǔ)言為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    如何從 Microsoft Visual C++ 應(yīng)用程序 (CyAPI.h) 訪問(wèn) CYUSB3014 芯片組的 i2c 接口?

    1. 如何從 Microsoft Visual C++ 應(yīng)用程序 (CyAPI.h) 訪問(wèn) CYUSB3014 芯片組的 i2c 接口? 我在定制相機(jī)中使用 CYUSB3014。 當(dāng)我開(kāi)發(fā)我的相機(jī)
    發(fā)表于 05-19 07:21

    使用C++的CyAPI編寫(xiě)的應(yīng)用程序上遇到了問(wèn)題,求解決

    我在使用 C++ 的 CyAPI 編寫(xiě)的應(yīng)用程序上遇到了問(wèn)題。 我將 XferData() 方法與其他所有端點(diǎn)類(lèi)型一起使用,沒(méi)有遇到任何問(wèn)題。 但是,將其與 Endpoint0 一起使用會(huì)引發(fā)
    發(fā)表于 05-13 06:11
    万州区| 邢台市| 霍山县| 苍山县| 崇仁县| 洞口县| 太和县| 密山市| 屏东县| 云龙县| 连州市| 南安市| 页游| 锦屏县| 淅川县| 海城市| 卓尼县| 宣恩县| 芮城县| 高州市| 高阳县| 广东省| 左权县| 沐川县| 柏乡县| 公安县| 托里县| 来安县| 盐亭县| 锡林郭勒盟| 克东县| 彭州市| 彩票| 罗源县| 昭通市| 容城县| 乐安县| 安宁市| 新疆| 营口市| 武平县|