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

c++中的繼承關(guān)系

 更新時(shí)間:2021年07月19日 11:07:59   作者:PRO_Z  
繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的層次結(jié)構(gòu),體現(xiàn)了由簡單到復(fù)雜的認(rèn)知過程,本文給大家介紹c++中的繼承關(guān)系,感興趣的朋友跟隨小編一起看看吧

1 什么是繼承

繼承概念

繼承(inheritance)機(jī)制是面向?qū)ο蟪绦蛟O(shè)計(jì)使代碼可以復(fù)用的最重要的手段,它允許程序員在保持原有類特性的基礎(chǔ)上進(jìn)行擴(kuò)展,增加功能。這樣產(chǎn)生新的類,稱派生類。繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的層次結(jié)構(gòu),體現(xiàn)了由簡單到復(fù)雜的認(rèn)知過程。

  面向?qū)ο蟮睦^承關(guān)系指類之間的父子關(guān)系。用類圖表示如下:

2 為什么要有繼承?/ 繼承的意義?

  因?yàn)槔^承是面向?qū)ο笾写a復(fù)用的一種手段。通過繼承,可以獲取父類的所有功能,也可以在子類中重寫父類已有的功能 以及 添加父類中沒有的功能。

3如何理解 子類是特殊的父類?

  因?yàn)樽宇惒粌H繼承了父類所有的屬性與行為,而且在子類中還可以重寫父類已有的功能,以及添加自己的新屬性與新方法。這也就是說子類對(duì)象可以當(dāng)作父類對(duì)象使用。

4 繼承的規(guī)則

  1) 子類是特殊的父類

  2) 子類對(duì)象可以直接初始化父類對(duì)象

  3) 子類對(duì)象可以直接賦值給父類對(duì)象

5 繼承中的訪問級(jí)別

  1)public:在類的內(nèi)部和外部都可以訪問。

  2)protected::可以在類的內(nèi)部使用,不可以在類的外部直接使用。,但是存在繼承關(guān)系時(shí),可以在子類中使用父類的protected的成員。

  3)private:只可以在類的內(nèi)部使用,不可以在類的外部使用。

  注:類的內(nèi)部:在當(dāng)前類的作用域中(不包括子類的作用域);類的外部:類內(nèi)部之外的作用域(包括子類的作用域)

  問題1:子類是否可以直接訪問父類中的private成員(非公有成員)嗎?(No)

    1)從面向?qū)ο罄碚摰慕嵌确治?,可知子類擁有父類一切的屬性與行為,得出的結(jié)論:Yes

    2)從c++的語法角度分析,可知外界不能訪問類的private成員,得出的結(jié)論:No

  問題2:談?wù)?protected關(guān)鍵字的存在的意義?

    protected關(guān)鍵字是為繼承而存在的,這樣就可以在子類中訪問父類的protected成員,同時(shí)還不允許外界直接訪問父類中的protected成員。

  問題3:在類中如何選擇類的訪問級(jí)別?--- 見下圖

6 繼承中的繼承方式

  1)public 繼承方式 --- 父類成員在子類中保持原有的訪問級(jí)別。

  2)protected繼承方式 ---父類中的公有成員在子類中變成了protected成員,其它不變。

  3)private 繼承方式(默認(rèn)) --- 父類成員在子類中變成了private成員

   可歸納為:

    結(jié)論:無論選擇哪種繼承方式,都不會(huì)影響子類訪問父類成員的級(jí)別

  注:1) c++ 工程項(xiàng)目中只使用 public 繼承方式;

    2) c++ 派生語言(jave,c#)只支持 public繼承方式;

    3)protected、private 繼承方式帶來的復(fù)雜性遠(yuǎn)大于其實(shí)用性;(舍棄不用)

用代碼實(shí)現(xiàn)類圖中的功能:

  代碼如下:

 #include <iostream>
  #include <string>
  #include <sstream>
  
  using namespace std;
  
 class Object
  {
  protected:
     string mName;
     string mInfo;
 public:
     Object()
     {
         mName = "Object";
         mInfo = "";
     }
     inline string getName()
     {
         return mName;
     }
     inline string getInfo()
     {
         return mInfo;
     }
 };
 
 class Point : public Object
 {
 private:
     int mX;
     int mY;
 public:
     Point(int x = 0, int y = 0)
     {
         ostringstream oss;
 
         mX = x;
         mY = y;
         mName = "Point";
         
         oss << "Point(" << mX << ", " << mY << ")";
         mInfo = oss.str();
     }
     inline int getX()
     {
         return mX;
     }
     inline int getY()
     {
         return mY;
     }
 };
 
 class Line : public Object
 {
 private:
     Point mP1;
     Point mP2;
 public:
     Line(Point p1, Point p2)
     {
         mP1 = p1;
         mP2 = p2;
         mName = "Line"; 
         mInfo = "Line from " + p1.getInfo() + " to " + p2.getInfo();
     }
     inline Point getStartPoint()
     {
         return mP1;
     }
     inline Point getEndPoint()
     {
         return mP2;
     }
 };
 
 int main(int argc, char const *argv[])
 {
     Object obj;
     cout << obj.getName() << endl;
     cout << obj.getInfo() << endl << endl;
 
     Point p1(1, 2);
     Point p2(3, 4);
     cout << p1.getName() << endl;
     cout << p1.getInfo() << endl;
     cout << p2.getName() << endl;
     cout << p2.getInfo() << endl << endl;
 
     Line line(p1, p2);
     cout << line.getName() << endl;
     cout << line.getInfo() << endl << endl;
 
     return 0;
 }

到此這篇關(guān)于c++中的繼承關(guān)系的文章就介紹到這了,更多相關(guān)c++繼承關(guān)系內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • 深入分析C++模板特化與偏特化

    深入分析C++模板特化與偏特化

    這篇文章主要介紹了C++模板特化與偏特化的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • C語言中左移和右移運(yùn)算符詳細(xì)介紹

    C語言中左移和右移運(yùn)算符詳細(xì)介紹

    這篇文章主要介紹了C語言中左移和右移運(yùn)算符詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C語言簡明講解三目運(yùn)算符和逗號(hào)表達(dá)式的使用

    C語言簡明講解三目運(yùn)算符和逗號(hào)表達(dá)式的使用

    三目運(yùn)算符,又稱條件運(yùn)算符,它是唯一有3個(gè)操作數(shù)的運(yùn)算符,有時(shí)又稱為三元運(yùn)算符。三目運(yùn)算符的結(jié)合性是右結(jié)合的;逗號(hào)表達(dá)式,是c語言中的逗號(hào)運(yùn)算符,優(yōu)先級(jí)別最低,它將兩個(gè)及其以上的式子聯(lián)接起來,從左往右逐個(gè)計(jì)算表達(dá)式,整個(gè)表達(dá)式的值為最后一個(gè)表達(dá)式的值
    2022-04-04
  • C語言定義字符串?dāng)?shù)組簡單代碼示例

    C語言定義字符串?dāng)?shù)組簡單代碼示例

    在C語言中字符串?dāng)?shù)組是用來存儲(chǔ)多個(gè)字符串的,可以通過字符數(shù)組或指針數(shù)組的方式定義,這篇文章主要介紹了C語言定義字符串?dāng)?shù)組的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-11-11
  • 在C語言中使用對(duì)數(shù)函數(shù)的方法

    在C語言中使用對(duì)數(shù)函數(shù)的方法

    這篇文章主要介紹了在C語言中使用對(duì)數(shù)函數(shù)的方法,包括以e為底和以10為底的對(duì)數(shù)計(jì)算,需要的朋友可以參考下
    2015-08-08
  • 深入學(xué)習(xí)C語言中memset()函數(shù)的用法

    深入學(xué)習(xí)C語言中memset()函數(shù)的用法

    這篇文章主要介紹了深入學(xué)習(xí)C語言中memset()函數(shù)的用法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • STL 的string類怎么啦

    STL 的string類怎么啦

    在我們研究string類犯了什么毛病之前,還讓我先說一下如何了解一個(gè)C++的類。我們要了解一個(gè)C++的類,一般來說,要從三個(gè)方面入手
    2013-11-11
  • C語言實(shí)現(xiàn)UDP通信

    C語言實(shí)現(xiàn)UDP通信

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)UDP通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++?Qt開發(fā)之使用QUdpSocket實(shí)現(xiàn)組播通信

    C++?Qt開發(fā)之使用QUdpSocket實(shí)現(xiàn)組播通信

    Qt?是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,本文將重點(diǎn)介紹如何運(yùn)用QUdpSocket組件實(shí)現(xiàn)基于UDP的組播通信,感興趣的可以了解下
    2024-03-03
  • LintCode 堆化詳解及實(shí)例代碼

    LintCode 堆化詳解及實(shí)例代碼

    這篇文章主要介紹了LintCode 堆化詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評(píng)論

乐东| 吴旗县| 廊坊市| 称多县| 昌平区| 南江县| 汕头市| 库车县| 盖州市| 吉安市| 泽州县| 乐都县| 霞浦县| 大新县| 衡水市| 岗巴县| 从江县| 汾阳市| 延津县| 高雄县| 宁武县| 离岛区| 平山县| 永平县| 郯城县| 盐津县| 且末县| 司法| 镇沅| 家居| 永清县| 珠海市| 洛阳市| 洛阳市| 从化市| 临西县| 惠水县| 沁源县| 神木县| 赞皇县| 扎赉特旗|