智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 5.1 C++的認(rèn)知_第1頁
智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 5.1 C++的認(rèn)知_第2頁
智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 5.1 C++的認(rèn)知_第3頁
智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 5.1 C++的認(rèn)知_第4頁
智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 5.1 C++的認(rèn)知_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

智能網(wǎng)聯(lián)汽車

計算平臺部署與測試項目五ROS的安裝與使用目錄01.C++的認(rèn)知02.Python的認(rèn)知03.ROS的認(rèn)知04.ROS的安裝05.ROS文件系統(tǒng)的構(gòu)建06.ROS通信系統(tǒng)的構(gòu)建01.C++的認(rèn)知面向?qū)ο蟮某绦蛟O(shè)計語言輸出一個表達(dá)式“1+1”的結(jié)果輸出一串漢字“北京歡迎您!”輸出一個字符串“HelloWorld!”任務(wù)描述(1)掌握C++語言中的專業(yè)術(shù)語、基本詞法和控制流程結(jié)構(gòu)的語法格式。(2)理解面向?qū)ο蟮某绦蛟O(shè)計語言的基本概念和特征,掌握類、對象、構(gòu)造函數(shù)、析構(gòu)函數(shù)、封裝、繼承和多態(tài)等專業(yè)術(shù)語。(3)能熟練操作C++語言的開發(fā)工具完成程序的基本功能。(4)能建立起用面向?qū)ο蟮某绦蛟O(shè)計方法解決實際問題的編程思維。(5)具備綜合運用C++程序設(shè)計語言解決實際問題的能力。(6)具有主動學(xué)習(xí)、獨立思考、終身學(xué)習(xí)的意識。(7)通過質(zhì)疑、討論和解疑,具備創(chuàng)新思維、創(chuàng)新個性和創(chuàng)新能力。任務(wù)目標(biāo)任務(wù)準(zhǔn)備防護(hù)裝備常規(guī)實訓(xùn)著裝01教學(xué)設(shè)備計算機平臺02教學(xué)工具Dev-C++,MicrosoftVisualStudio03一、概述(一)C++的概念C++,讀作“C加加”,是“CPlusPlus”的簡稱,是一門以C語言為基礎(chǔ)發(fā)展而來的面向?qū)ο蟮某绦蛟O(shè)計語言。自1983年由BjarneStroustrup教授在貝爾實驗室創(chuàng)立開始至今,已經(jīng)發(fā)展了近40年。C++從最初的Cwithclass,經(jīng)歷了從C++98、C++03、C++11、C++14到C++17再到C++20等多次標(biāo)準(zhǔn)化改造,功能得到了極大的豐富,已經(jīng)演變?yōu)橐婚T集面向過程、面向?qū)ο?、函?shù)式、泛型和元編程等多種編程范式的復(fù)雜編程語言。它是一種靜態(tài)類型的、編譯式的、通146用的、大小寫敏感的、不規(guī)則的編程語言,綜合了高級語言和低級語言的特點,通常被認(rèn)為是中級程序設(shè)計語言。一、概述階段內(nèi)容Cwithclasses類及派生類、公有和私有成員、類的構(gòu)造和析構(gòu)、友元、內(nèi)聯(lián)函數(shù)、賦值運算符重載等C++1.0添加虛函數(shù)概念,函數(shù)和運算符重載,引用、常量等C++2.0更加完善支持面向?qū)ο?,新增保護(hù)成員、多重繼承、對象的初始化、抽象類、靜態(tài)成員以及const成員函數(shù)C++3.0進(jìn)一步完善,引入模板,解決多重繼承產(chǎn)生的二義性問題和相應(yīng)構(gòu)造和析構(gòu)的處理C++98C++標(biāo)準(zhǔn)第一個版本,絕大多數(shù)編譯器都支持,得到了國際標(biāo)準(zhǔn)化組織(ISO)和美國標(biāo)準(zhǔn)化協(xié)會認(rèn)可,以模板方式重寫C++標(biāo)準(zhǔn)庫,引入了STL(標(biāo)準(zhǔn)模板庫)C++03C++標(biāo)準(zhǔn)第二個版本,語言特性無大改變,主要:修訂錯誤、減少多異性C++05C++標(biāo)準(zhǔn)委員會發(fā)布了一份計數(shù)報告(TechnicalReport,TR1),正式更名C++0x,即:計劃在本世紀(jì)第一個10年的某個時間發(fā)布C++11增加了許多特性,使得C++更像一種新語言,比如:正則表達(dá)式、基于范圍for循環(huán)、auto關(guān)鍵字、新容器、列表初始化、標(biāo)準(zhǔn)線程庫等C++14對C++11的擴展,主要是修復(fù)C++11中漏洞以及改進(jìn),比如:泛型的lambda表達(dá)式,auto的返回值類型推導(dǎo),二進(jìn)制字面常量等C++17在C++11上做了一些小幅改進(jìn),增加了19個新特性,比如:static_assert()的文本信息可選,F(xiàn)old表達(dá)式用于可變的模板,if和switch語句中的初始化器等C++20自C++11以來最大的發(fā)行版,引入了許多新的特性,比如:模塊(Modules)、協(xié)程(Coroutines)、范圍(Ranges)、概念(Constraints)等重大特性,還有對已有特性的更新:比如Lambda支持模板、范圍for支持初始化等C++23制定ing(二)C++的發(fā)展簡史(三)C++語言的主要特點01.與C語言兼容02.數(shù)據(jù)封裝和數(shù)據(jù)隱藏03.繼承和重用一、概述04.多態(tài)性C++與C語言完全兼容,C語言的絕大部分內(nèi)容可以直接用于C++的程序設(shè)計,用C語言編寫的程序可以不加修改地用于C++。在C++中,類是支持?jǐn)?shù)據(jù)封裝的工具,對象則是數(shù)據(jù)封裝的實現(xiàn)。C++通過建立用戶定義類支持?jǐn)?shù)據(jù)封裝和數(shù)據(jù)隱藏。在C++現(xiàn)有類的基礎(chǔ)上可以聲明新類型,這就是繼承和重用的思想。多態(tài)性形成由父類和它們的子類組成的一個樹型結(jié)構(gòu)。(四)C++的開發(fā)環(huán)境由IBM開發(fā)的免費開源的IDEEclipse微軟開發(fā)的開源代碼編輯器,適用于所有類型的操作系統(tǒng)VisualStudioCode由Apache軟件基金會開發(fā),被C++開發(fā)人員認(rèn)為是最好用的IDE之一NetBeans一、概述由Jetbrains開發(fā),是C++程序員最推薦的跨平臺IDECLion開放源代碼的IDE,是Qt被Nokia收購后推出的輕量級集成開發(fā)環(huán)境QtCreator二、C++基本概念和語法(一)程序編譯和運行C++和C語言類似,也要經(jīng)過編譯和鏈接后才能運行。前面所述的C++IDE,除了可以編輯C++源代碼,還可以實現(xiàn)C++的編譯、鏈接、調(diào)試和運行。與C語言源代碼文件后綴統(tǒng)一為.c不同,在不同的編譯器下,C++語言源代碼文件的后綴名并不相同。以下是幾款主流的編譯器對應(yīng)的C++源代碼文件后綴:(1)MicrosoftVisualC++:cpp、cxx、cc(2)GCC:cpp、cxx、cc、c++、C(3)BorlandC++:cpp(4)Unix:C、cc、cxx二、C++基本概念和語法(二)命名空間C++使用命名空間的目的是對標(biāo)識符的名稱進(jìn)行本地化,以避免命名沖突或名字污染。namespaceA{ File*fp=NULL;}namespaceB{ File*fp=NULL;}使用變量、函數(shù)時要指明它們所在的命名空間。以上面的fp變量為例,可以這樣使用:A::fp=fopen("one.txt","r");B::fp=fopen("two.txt","rb+");二、C++基本概念和語法(三)頭文件早期的C++還不完善,不支持命名空間,沒有自己的編譯器,是在使用C語言的庫,stdio.h、stdlib.h、string.h等頭文件依然有效;此外C++也開發(fā)了一些新的庫,增加了自己的頭文件,例如:和C語言一樣,C++頭文件仍然以.h為后綴,它們所包含的類、函數(shù)、宏等都是全局范圍的。后來C++引入了命名空間的概念,重新編寫庫,將類、函數(shù)、宏等都統(tǒng)一納入一個命名空間,這個命名空間的名字就是std。iostream.h:用于控制臺輸入輸出頭文件。fstream.h:用于文件操作的頭文件。complex.h:用于復(fù)數(shù)計算的頭文件。為了避免頭文件重名,新版C++庫也對頭文件的命名做了調(diào)整,去掉了后綴.h:iostream.h→iostream,fstream.h→fstream對于原來C語言的頭文件,也采用同樣的方法,但在每個名字前還要添加一個c字母:stdio.h→cstdio,stdlib.h→cstdlib二、C++基本概念和語法(四)數(shù)據(jù)類型和變量bool布爾型,占1個字節(jié)內(nèi)存,取值為0或1。01char字符型,占1個字節(jié)內(nèi)存,取值范圍為0到255或-128到127,因編譯器而定。02int整型,占4個字節(jié),取值范圍為-2147483648到2147483647。03float單精度型,占4個字節(jié),所能表示范圍為(1.17549e-038)到(3.40282e+038)。04double雙精度類型,占8個字節(jié),所能表示范圍為(2.22507e-308)到(1.79769e+308)。05longdouble長雙精度類型,占16個字節(jié),可提供18-19位有效數(shù)字。06wchar_t寬字符類型,占2或4個字節(jié)。07二、C++基本概念和語法(四)數(shù)據(jù)類型和變量變量是程序可操作的存儲區(qū)的名稱。C++變量的名稱可以由字母(大小寫不同)、數(shù)字和下劃線字符組成,必須以字母或下劃線開頭。C++是強類型語言,所有的變量在可以使用前,必須要進(jìn)行定義。變量定義就是告訴編譯器在何處創(chuàng)建變量的存儲,以及如何創(chuàng)建變量的存儲。在語法上,變量定義需要指定一個數(shù)據(jù)類型,并包含了該類型的一個或多個變量的列表,如: inti,j,k;該語句聲明并定義了變量i、j和k,指示編譯器創(chuàng)建類型為int,名為i、j、k的變量。變量可以在聲明的時候被初始化(指定一個初始值)。初始化器由一個等號,后跟一個常量表達(dá)式組成:intd=3,k=5;如果變量在定義式未初始化,則帶有靜態(tài)存儲持續(xù)時間的變量會被隱式初始化為NULL(所有字節(jié)的值都是0),其他所有變量的初始值是未定義的。二、C++基本概念和語法(五)運算符(1)算術(shù)運算符:+(加)、-(減)、*(乘)、/(除)、%(模)、++(自增)、--(自減)。(2)關(guān)系運算符:==(相等)、!=(不等)、>(大于)、<(小于)、>=(大等于)、<=(小等于)(3)邏輯運算符:&&(邏輯與)、||(邏輯或)、!(邏輯非)。(4)位運算符:&(按位與)、|(按位或)、^(按位異或)、~(按位取反)、<<(二進(jìn)制左移)、>>(二進(jìn)制右移)。(5)賦值運算符:=(簡單賦值)、+=(加且賦值)、-=(減且賦值)、*=(乘且賦值)、/=(除且賦值)、%/(模且賦值)、<<=(左移且賦值)、>>=(右移且賦值)、&=(按位與且賦值)、|=(按位或且賦值)、^=(按位異或且賦值)。(6)雜項運算符:sizeof(計算變量所占內(nèi)存大?。?、Condition?X:Y(條件運算符,如果Condition為真則值為X,否則為Y)、->(成員運算符)、Cast(強制轉(zhuǎn)換運算符)、&(指針運算符,返回變量在內(nèi)存中的地址)、*(指針運算符,返回指針變量的值)。二、C++基本概念和語法(六)控制語句條件語句if語句if…else語句switch語句循環(huán)語句for循環(huán)while循環(huán)do…while循環(huán)二、C++基本概念和語法(六)控制語句條件語句if語句if…else語句switch語句if語句if(boolean_expression){//如果boolea_expression為true要執(zhí)行的語句}if…else語句if(boolean_expression){//如果boolea_expression為true時要執(zhí)行的語句}else{//如果boolea_expression為false時要執(zhí)行的語句}if…else語句還可以寫成if…elseif…elseSwitch語句switch(expression){casevalue1://expression值為value1時要執(zhí)行的語句break;//可選casevalue2://expression值為value2時要執(zhí)行的語句break;//可選default://可選//缺省情況下要執(zhí)行的語句(即expression值都不等于各case值時)}循環(huán)語句for循環(huán)while循環(huán)do…while循環(huán)二、C++基本概念和語法(六)控制語句for循環(huán)for(init;condition;increment){//要循環(huán)執(zhí)行的語句,即循環(huán)主體}while循環(huán)while(condition){//要循環(huán)執(zhí)行的語句,即循環(huán)主體}do…while循環(huán)do{//要循環(huán)執(zhí)行的語句,即循環(huán)主體}二、C++基本概念和語法(七)輸入輸出C++的輸入/輸出發(fā)生在流中,流是字節(jié)序列。輸入操作:字節(jié)流是從設(shè)備(如鍵盤、磁盤驅(qū)動器、網(wǎng)絡(luò)連接等)流向內(nèi)存輸出操作:字節(jié)流是從內(nèi)存流向設(shè)備(如顯示屏、打印機、磁盤驅(qū)動器、網(wǎng)絡(luò)連接等)C++提供了包括輸入、輸出、錯誤、日志、文件等在內(nèi)的輸入/輸出流,涉及到以下幾個主要的頭文件:<iostream><iomanip><fstream>01標(biāo)準(zhǔn)輸出流coutcout對象“連接”到標(biāo)準(zhǔn)輸出設(shè)備(通常是顯示屏),與流插入運算符<<結(jié)合使用。02標(biāo)準(zhǔn)輸入流cincin對象附屬到標(biāo)準(zhǔn)輸入設(shè)備(通常是鍵盤),與流提取運算符>>結(jié)合使用。03標(biāo)準(zhǔn)錯誤流cerrcerr對象附屬到標(biāo)準(zhǔn)輸出設(shè)備(通常也是顯示屏),但是cerr對象是非緩沖的,且每個流插入到cerr都會立即輸出。04標(biāo)準(zhǔn)日志流clogclog對象附屬到標(biāo)準(zhǔn)輸出設(shè)備(通常也是顯示屏),與cerr不同,clog對象是緩沖的。三、類和對象類是C++的核心特性,它包含了數(shù)據(jù)表示法和用于處理數(shù)據(jù)的方法。類中的數(shù)據(jù)、方法和函數(shù)稱為類的成員。類是創(chuàng)建對象的模板,一個類可以創(chuàng)建多個對象,每個對象都是類類型的一個變量。創(chuàng)建對象的過程也叫類的實例化。每個對象都是類的一個具體實例(Instance),擁有類的成員變量和成員函數(shù)。與結(jié)構(gòu)體一樣,類只是一種復(fù)雜數(shù)據(jù)類型的聲明,不占用內(nèi)存空間。而對象是類這種數(shù)據(jù)類型的一個變量,或者說是通過類這種數(shù)據(jù)類型創(chuàng)建出來的一份真實的數(shù)據(jù),所以占用內(nèi)存空間。三、類和對象創(chuàng)建一個Student類:classStudent{ public: //成員變量 char*name; intage; floatscore; //成員函數(shù) voidstudentInfo(){ cout<<name<<"的年齡是"<<age<<",成績是"<<score<<endl; }};有了Student類后,就可以通過它來創(chuàng)建對象了,如:StudentzhangSan;創(chuàng)建對象以后,可以使用點號.來訪問成員變量和成員函數(shù),這和通過結(jié)構(gòu)體變量來訪問它的成員相類似,如:zhangS=“張三”;zhangSan.age=16;zhangSan.score=95;zhangSan.studentInfo();三、類和對象類和對象的其它關(guān)鍵概念如下:02構(gòu)造函數(shù)和析構(gòu)函數(shù)03友元函數(shù)/類01訪問修飾符05this指針06靜態(tài)成員04內(nèi)聯(lián)函數(shù)四、繼承和派生繼承(Inheritance)是類與類之間的關(guān)系,與現(xiàn)實世界中的繼承類似。繼承可以理解為一個類從另一個類獲取成員變量和成員函數(shù)的過程。派生(Derive)和繼承是一個概念,只是站的角度不同。被繼承的類稱為父類或基類,繼承的類稱為子類或派生類。以下是兩種典型的使用繼承的場景:當(dāng)創(chuàng)建的新類與現(xiàn)有的類相似,只是多出若干成員變量或成員函數(shù)時,可以使用繼承,這樣不但會減少代碼量,而且新類會擁有基類的所有功能。當(dāng)需要創(chuàng)建多個類,并且這些類之間擁有很多相似的成員變量或成員函數(shù)時,也可以使用繼承。此時,可以將這些類的共同成員提取出來,定義為基類,然后從基類繼承,既可以節(jié)省代碼,也方便后續(xù)修改成員。四、繼承和派生//基類PeopleclassPeople{ public: voidsetname(char*name); voidsetage(intage); char*getname(); intgetage(); private: char*m_name; intm_age;};//派生類StudentclassStudent:publicPeople{ public: voidsetscore(floatscore); floatgetscore(); private: floatm_score;};可以看到,類繼承的語法為:class子類名:[繼承方式]父類名{ //子類新添加的成員}其中,繼承方式包括public(公有的)、private(私有的)和protected(受保護(hù)的),該項是可選的,如果不寫,那么默認(rèn)為private。五、多態(tài)和虛函數(shù)“多態(tài)(polymorphism)”指的是同一名字的事物可以完成不同的功能。多態(tài)可以分為編譯時的多態(tài)和運行時的多態(tài)。前者主要是指函數(shù)的重載(包括運算符的重載)、對重載函數(shù)的調(diào)用,在編譯時就能根據(jù)實參確定應(yīng)該調(diào)用哪個函數(shù),因此叫編譯時的多態(tài);而后者則和繼承、虛函數(shù)等概念有關(guān)。C++的多態(tài)意味著調(diào)用成員函數(shù)時,會根據(jù)調(diào)用函數(shù)的對象的類型來執(zhí)行不同的函數(shù)。為了實現(xiàn)這個目的,C++引入了“虛函數(shù)”的概念。虛函數(shù)的定義非常簡單,只需要在函數(shù)聲明前面增加virtual關(guān)鍵字,如:virtualvoiddisplay();C++中虛函數(shù)的唯一用處就是構(gòu)成多態(tài)。有了虛函數(shù),基類指針指向基類對象時就使用基類的成員(包括成員函數(shù)和成員變量),指向派生類對象時就使用派生類的成員。換句話說,基類指針可以按照基類的方式來做事,也可以按照派生類的方式來做事,它有多種形態(tài),或者說有多種表現(xiàn)方式,這就是多態(tài)。六、異常處理C++的異常是指在程序運行時發(fā)生的特殊情況或錯誤,比如嘗試除以零的操作。異常提供了一種轉(zhuǎn)移程序控制權(quán)的方式。C++異常處理涉及到三個關(guān)鍵字:try、catch、throw。throw:當(dāng)問題出現(xiàn)時,程序會拋出一個異常。catch:用于捕獲異常,在想要處理問題的地方,通過異常處理程序捕獲異常。try:try塊中的代碼標(biāo)識將被激活的特定異常。它后面通常跟著一個或多個catch塊。六、異常處理以下是C++異常處理的示例程序:try{ //保護(hù)代碼}catch(ExceptionNamee1){ //catch塊}catch(ExceptionNamee2){ //catch塊}catch(ExceptionNameeN

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論