C++基礎(2)——封裝(補充)與繼承

2021-02-19 木葉藤花的五畝地

鑑於可能有一部分讀者剛剛初學C++,所以我在這裡做一些補充基礎的說明告訴大家如何入門。

首先,如果你只是想學一門程式語言作為興趣,那學C++吧,C++樂趣無窮,但是,如果你是想快速入門用它來找工作,那就,快跑吧!java不香嗎?

如果你看到這裡,表示老子就要和C++槓上了,新手入門可以看一看。

首先是本地IDE,一開始我用的是visual studio,後來因為vscode插件太好用了,轉換成了vscode,但是初學者建議使用visual studio,因為vscode的頭文件和源文件的連結有點麻煩。

之後給大家推薦一個視頻,我是跟著b站上的黑馬程式設計師入門了C++,介紹了for,while,if之類的東西以及普通的語法。

https://www.bilibili.com/video/BV1et411b73Z

接下來對封裝再進行進一步的補充。

上一節介紹了封裝中的public和private,只大概說明了在類外調用不同權限的成員。

這裡再多提一點。當類外(比如說main函數中),需要調用類內的private權限的成員變量怎麼辦呢?可以通過在類內的public權限下建立一個調用private成員變量的函數。

#include <iostream>using namespace std;
class GF{public: string name; int age; void dosth(){ cout << "do something!" << endl; cout << a << endl; cout << b << endl; }private: int a = 1; int b = 2;};
int main(){ GF gf; gf.name = "wang"; gf.age = 26; cout << "name = " << gf.name << "age = " << gf.age << endl;
gf.dosth();
return 0;}

OK,封裝補充完了,接下來介紹繼承。

繼承是關於一個類繼承一個類,也就是說繼承的父類的子類可以具有父類的一些成員函數或者變量。比如:

#include <iostream>using namespace std;
class GF{public: string name; int age; void dosth(){ cout << "do something!" << endl; cout << a << endl; cout << b << endl; }private: int a = 1; int b = 2;};
class ONE : public GF{
};
int main(){ ONE one; one.age = 26; one.name = "zhangsan"; one.dosth(); cout << "name = " << one.name << "age = " << one.age << endl; return 0;}

可以看到,ONE這個類裡面沒有什麼,但只是用public的方式繼承了一下GF,在main函數中,就可以創建一個one,它具有age,name,dosth()等成員。

我們可以使用visual studio下面的開發者工具,打開Developer Command Prompt

首先將目錄切換到該文件的目錄,我這裡是E盤,直接輸入E:

切入到E盤之後,將目錄切入到該文件夾下 cdE:\studyofcpp\studioteaching\繼承\繼承

輸入dir,回車,可以看到該文件下面的目錄

在輸入 c1 /d1 reportSingleClassLayoutONE 「01內存分布.cpp」

(格式為c1 /d1 reportSingleClassLayout類名 「文件名」)

終端上就會顯示:

如上圖所示:我們在ONE中雖然沒有寫任何的成員變量或是函數,但是該類卻具有age、a、b三個對象,具體為什麼沒有函數,之後詳敘。

 

如果你再在ONE裡面寫一個c:

class ONE : public GF{public:    int c;};

再進行上述操作,就會顯示

可以看到,age、a、b是繼承而來的,c是自己的。

 

我們之前在探討C++類內三種權限時,說到了public、private、protected,當時我們只介紹了前兩種,分別是以類外可不可以調用來區分的。

當沒有繼承關係的時候,protected和private一樣,類外不可以調用類內的protected成員,但是當涉及到繼承的子類時,子類是可以調用父類中protected的成員的,但是無法調用private成員。

子類在繼承父類時,也有這三種不同的繼承,public、protected和private。

圖片來自於:https://blog.csdn.net/weixin_38889219/article/details/106291935

以防忘記,下面會逐步介紹類內內存分布、虛繼承、菱形繼承

(歡迎補充)

相關焦點

  • Java面向對象之:封裝、繼承、多態
    Java面向對象之:封裝、繼承、多態高內聚和低耦合面向對象的最終目的是要構建強健、安全、高效的項目,也就是要實現項目的高內聚和低耦合封裝實例很少會使用(預設),即使要使用,也僅僅是暴露給同包中的其他類訪問;protected很多時候出現在繼承關係中,父類只希望被子類訪問的欄位和方法時;
  • CSharp基礎知識-面向對象
    面向對象的三大特性面向對象的三大特性是封裝、繼承、多態。我把它們稱為面向對象面試三巨頭,因為一旦面試,如果有面向對象的問題絕對會問到這三個特性。封裝封裝簡單來講就是調用方不知道被調用方的具體實現以及內部機制,就像我們看別人只能看到外表缺看不到器官的運作(當然除非你是醫生)。
  • 如何選擇電阻電容的封裝形式?
    比如,同樣是104的電容有0603、0805的封裝,同樣是10uF電容有3216,0805,3528等封裝形式,選擇哪種封裝形式比較合適呢?答:貼片的封裝主要有:0201 1/20W 0402 1/16W 0603 1/10W 0805 1/8W 1206 1/4W電容電阻外形尺寸與封裝的對應關係是: 0402=1.0x0.5 0603=1.6x0.8 0805=2.0x1.2 1206=3.2x1.6 1210=3.2x2.5 1812=4.5x3.2 2225=5.6x6.5電容本身的大小與封裝形式無關
  • 潔美科技投資建設年產420萬卷封裝膠帶擴產項目
    來源:挖貝網挖貝網 7月23日消息,潔美科技(證券代碼:002859)發公告稱,浙江潔美電子科技股份有限公司於2020年7月23日召開第三屆董事會第五次會議,審議通過了《關於補充確認公司「年產360萬卷封裝膠帶擴產項目」投資及變更項目投資規模的議案
  • C++ 大神 John Carmack 的編程傳說
    幸運的是,id Software的 C++子集(擁有類的 C 語言)可以讓你輕鬆運用 C++ :沒有異常沒有引用(使用指針)儘可能少使用模板常量無處不在擁有類多態性繼承>它僅僅是 c++ 98 標準的一個子集。
  • 一文看懂COB封裝和SMD封裝區別
    1.2 COB封裝的優勢(1) 超輕薄:可根據客戶的實際需求,採用厚度從0.4~1.2 mm厚度的PCB板,使重量最少降低到原來傳統產品的1/3,可為客戶顯著降低結構、運輸和工程成本。(2) 防撞抗壓:COB產品是直接將LED晶片封裝在PCB板的凹形燈位內,然後用環氧樹脂膠封裝固化,燈點表面凸起成球面,光滑而堅硬,耐撞耐磨。
  • 微電子器件封裝材料有哪些分類?金屬\陶瓷\塑料封裝的應用與工藝
    常用的晶片、基板材料及金屬封裝材料的(2)塑料封裝塑料封裝材料一般W熱固性材料為主,通常包括環氧類、酪酸類、聚酷類和有機珪類,其中W環氧樹脂應用最為廣泛(3)陶瓷封裝陶瓷封裝材料是一種常用的電子封裝材料,陶瓷封裝屬於氣密性封裝,它的優點在於耐溼性好,良好的熱學性能如熱膨脹率及熱導率,機械強度高、化學性能穩定,綜合性能優秀。目前應用最為廣泛的是Al2O3、BeO和AlN陶瓷。
  • 晶圓級封裝(WLCSP) & 倒片封裝(Flip-Chip)
    受電子產品的小、輕、薄的驅動,封裝領域也是不斷開發出新的封裝type。上一章就有說到CSP封裝就是比較革命性的產品,Size是裸晶片的1.2倍甚至同等大小,尤其隨著移動電子的興起,這種裸晶片封裝(Wafer Level CSP)封裝已經是最小最省錢的封裝方式了,雖然前期需要RDL的光罩費用,但是它省去了Leadframe的費用,直接solder bump焊接到主板上即可。
  • 霍爾元件封裝樣式之一——貼片封裝
    貼片霍爾眾所周知,霍爾元件有兩種封裝樣式,一種是外接三根長管腳的插件樣式,一種是圖片中的貼片樣式,插件樣式比較好安裝,貼片樣式安裝後穩定性比較好,各有利弊。霍爾元件封裝形式中的三腳貼片封裝(SOT-23),也就是圖片中的封裝樣式,是一種小型化的封裝,它的封裝體積有大有小,貼片封裝相比插片封裝在安裝上更便捷,也更節省人工。華芯霍爾幾乎每種型號的霍爾都有貼片的封裝樣式。三腳插片封裝是霍爾元件常用的一種封裝形式,它的英文簡稱是TO-92或者SIP-3。
  • 史上最強的封裝教程,五分鐘學會封裝系統
    合人群:    1、會裝系統    2、了解PE的使用    3、對註冊表有初步的了解所需工具:    1、Windows系統鏡像    2、PE(可以放到U盤,如果使用虛擬機封裝系統,直接下載1、安裝系統2、啟用Administrator帳戶3、進行簡單的系統設置4、系統精簡5、安裝Adobe Flash Player6、設置IE主頁7、在系統盤(C盤)創建Sysprep目錄8、準備好靜默安裝包(使用裝機包定製工具定製)9、打開EasySysprep V3軟體開始封裝
  • 先進封裝:半導體廠商的新戰場
    Yole的分析師Santosh Kumar補充說,2020年由於新冠疫情的影響,其實先進封裝的市場規模並沒有如預期的增長,而是下滑了7%左右,傳統封裝市場規模下滑了15%。不過,他同時強調,2020年的下滑是意外事件,2021年應該會重拾升勢。
  • 五個方面剖析SIP封裝工藝,看懂SIP封裝真正用途
    2、時間快 SIP模組板身是一個系統或子系統,用在更大的系統中,調試階段能更快的完成預測及預審。 3、成本低 SIP模組價格雖比單個零件昂貴,然而PCB空間縮小,低故障率、低測試成本及簡化系統設計,使總體成本減少。
  • 常見mosfet的封裝技術圖解大全
    電腦主機板一般不採用直插式封裝的MOSFET,本文不討論直插式封裝的MOSFET。一般來說,「晶片封裝」有2層含義,一個是封裝外形規格,一個是封裝技術。2、SOT封裝SOT(Small Out-Line Transistor)小外形電晶體封裝。這種封裝就是貼片型小功率電晶體封裝,比TO封裝體積小,一般用於小功率MOSFET。
  • LED小間距顯示屏包含哪些封裝技術與載入不上的原因淺析?
    毫不誇張的說:LED小間距屏在封裝在顯示屏產業中起到至關重要的作用,2020年將會進入微間距的發展階段,發展小間距顯示屏已經成為了眾多LED顯示屏企業改革的重要一環。了解小間距屏的多種封裝技術已經成為產品質量保證的關鍵,那麼LED小間距顯示屏包含哪些封裝技術呢?可以從以下幾點進行考慮。
  • Java基礎面試題簡單總結
    Java基礎方面:1、作用域public,private,protected,以及不寫時的區別答:區別如下:寫時默認為friendly 2、Anonymous Inner Class (匿名內部類)派生類可以從它的基類那裡繼承方法和實例變量,並且類可以修改或增加新的方法使之更適合特殊的需要。封裝:封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。
  • OKHttp的基本使用和簡單封裝
    2.首先來介紹一下Okhttp:  Okhttp出自鼎鼎大名的Square,官方github地址:https://github.com/square/okhttp;它基本包含所有常用的網絡請求,同步、異步的get、post請求,文件上傳下載等等,廢話不說,直接進入教程3.Okhttp的使用:
  • 技能補給站 | 功率電晶體的封裝及功率三極體封裝圖示
    我們常見的電子元器件封裝屬於最終封裝,是可以直接進行印製板(PCB)安裝的封裝形式,雖然各半導體晶片製造商都提供沒有最終封裝的預封裝裸片(不能直接安裝於印製板),但是帶有最終封裝的元器件仍然是最主要、最主流的提供形式。功率電晶體相對於集成電路,引腳排列相對簡單,只是外部形狀各異。
  • 一門APP教您封裝APP和原生APP的區別
    現在一般分為2種方案:一,是指把URL,通過把手機網站封裝到APP裡面,簡單的來說就是把手機網站變成APP,APP的內容和手機站的內容一模一樣,APP的數據訪問方式還是通過URL域名來處理的;二,通過把網站的前端代碼,HTML代碼封裝進APP安裝包,所有的本地文件(頁面cssJS視頻等)都封裝進APP的安裝包裡面;封裝APP屬於混合APP
  • BGA封裝的技巧及工藝原理解析
    球柵陣列封裝(BGA)典型的球柵陣列封裝(BGA)是非常耐用的,一旦被掉落到地板上之後,BGA可進行組裝。這對PQFP封裝來說,在某種程度上是不可能的。BGA的先進性為面積陣列形式,通常情況下較QFP在每一面積中提供較多的I/O數(如圖2所示)。
  • 晶圓級封裝是什麼意思?
    常見的WLP封裝繞線方式如下:1.Redistribution (Thin film), 2. Encapsulated Glass substrate, 3. Gold stud/Copper post, 4. Flex Tape等。