easy-cpp系列簡(jiǎn)明C++教程(第一章)-創(chuàng)新互聯(lián)

簡(jiǎn)明C++基礎(chǔ)教程 前言

構(gòu)思了很久的easy-cpp系列博客教程,現(xiàn)在終于有動(dòng)力開始寫了,也是想再回顧一下當(dāng)初自己學(xué)習(xí)C++的過程,也是想以初學(xué)者的角度回顧一下自己當(dāng)時(shí)踩過的坑,同時(shí)也給各位初學(xué)者避避雷。目前是先打算結(jié)合自己大學(xué)的教材和自己看過的一些C++相關(guān)的書籍資料,寫一寫自己對(duì)一些概念的理解,再穿插一些自己當(dāng)時(shí)寫代碼時(shí)出的一些錯(cuò)誤、踩過的坑以及解決辦法。本人資質(zhì)尚淺,文章中難免出現(xiàn)一些錯(cuò)誤,歡迎各位佬批評(píng)指正。

創(chuàng)新互聯(lián)建站專業(yè)網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),集網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營(yíng)銷、軟文平臺(tái)等專業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計(jì),讓網(wǎng)站在運(yùn)行后,在搜索中有好的表現(xiàn),專業(yè)設(shè)計(jì)制作為您帶來效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。第一章 預(yù)備知識(shí) 1.1 程序設(shè)計(jì)語(yǔ)言 1.1.1 程序設(shè)計(jì)語(yǔ)言與計(jì)算機(jī)程序

程序設(shè)計(jì)語(yǔ)言也被稱為編程語(yǔ)言、計(jì)算機(jī)語(yǔ)言,是用來完成程序設(shè)計(jì)的一種用于與交流或交互的人造語(yǔ)言。更通俗的來講,程序設(shè)計(jì)語(yǔ)言是由人類設(shè)計(jì)的用來與計(jì)算機(jī)進(jìn)行交流的一種工具。它是計(jì)算機(jī)能夠理解和識(shí)別人類用戶的操作意圖的一種交互體系,是計(jì)算機(jī)可編程的具體體現(xiàn),也是程序設(shè)計(jì)的具體實(shí)現(xiàn)方式。程序設(shè)計(jì)語(yǔ)言按照特定的規(guī)則組織計(jì)算機(jī)指令,使計(jì)算機(jī)能夠按照人類意愿進(jìn)行各種運(yùn)算處理。而按照程序設(shè)計(jì)語(yǔ)言的規(guī)則組織起來的一組計(jì)算機(jī)指令被稱為計(jì)算機(jī)程序。簡(jiǎn)單來說,計(jì)算機(jī)程序是由一條條有序指令組成的,指揮計(jì)算機(jī)完成一個(gè)操作的有序步驟。

1.1.2 高級(jí)語(yǔ)言與低級(jí)語(yǔ)言

隨著計(jì)算機(jī)科學(xué)的發(fā)展,程序設(shè)計(jì)語(yǔ)言也在不斷地變化。隨著時(shí)間的發(fā)展,一共出現(xiàn)了三種類型的程序設(shè)計(jì)語(yǔ)言:機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言。

最早的程序設(shè)計(jì)語(yǔ)言是機(jī)器語(yǔ)言。機(jī)器語(yǔ)言是一種二進(jìn)制語(yǔ)言,它直接使用二進(jìn)制代碼表達(dá)指令,每一條二進(jìn)制代碼表示一個(gè)功能,是計(jì)算機(jī)硬件不需要轉(zhuǎn)化就可以直接識(shí)別和執(zhí)行的一種程序設(shè)計(jì)語(yǔ)言。不同計(jì)算機(jī)結(jié)構(gòu)的機(jī)器語(yǔ)言不同。

直接使用機(jī)器語(yǔ)言進(jìn)行編程十分復(fù)雜,且二進(jìn)制的代碼難以閱讀、理解和修改,因此人們?cè)跈C(jī)器語(yǔ)言的基礎(chǔ)上創(chuàng)造了匯編語(yǔ)言。匯編語(yǔ)言使用符號(hào)(助記符)來代替二進(jìn)制代碼,助記符與二進(jìn)制代碼一一對(duì)應(yīng)。用匯編語(yǔ)言編寫出的程序稱為匯編源程序。匯編語(yǔ)言的出現(xiàn),在計(jì)算機(jī)發(fā)展的早期幫助程序員提高了編程效率。與機(jī)器語(yǔ)言類似,不同計(jì)算機(jī)結(jié)構(gòu)的匯編指令不同。

雖然匯編語(yǔ)言的出現(xiàn)為程序設(shè)計(jì)人員提供了很大的方便,但是直接使用匯編語(yǔ)言進(jìn)行編程依然是一件繁冗的工作:它需要程序設(shè)計(jì)人員了解計(jì)算機(jī)硬件的細(xì)節(jié),而且由于不同計(jì)算機(jī)結(jié)構(gòu)的匯編指令不同,要將匯編源程序移植到另一種計(jì)算機(jī)上,就必須用不同的匯編指令重新編寫程序(可移植性差)。在這種情況下,高級(jí)語(yǔ)言運(yùn)應(yīng)而生。高級(jí)語(yǔ)言是接近于自然語(yǔ)言的一種程序設(shè)計(jì)語(yǔ)言,高級(jí)語(yǔ)言致力于解決問題而不是像機(jī)器語(yǔ)言、匯編語(yǔ)言一樣針對(duì)特定計(jì)算機(jī)硬件。高級(jí)語(yǔ)言可移植性好,同一種高級(jí)語(yǔ)言在不同計(jì)算機(jī)上的表達(dá)方式是一致的,代碼只與編程語(yǔ)言有關(guān),高級(jí)語(yǔ)言使用一種稱為“編譯器”或“解釋器”的特殊程序?qū)⒏呒?jí)語(yǔ)言翻譯成特定的計(jì)算機(jī)的內(nèi)部語(yǔ)言,這樣一來就可以通過不同的編譯器在不同平臺(tái)上使用高級(jí)語(yǔ)言。用高級(jí)語(yǔ)言編寫的程序稱為源程序。

由于機(jī)器語(yǔ)言與匯編語(yǔ)言都直接操作計(jì)算機(jī)硬件,并基于此根據(jù)特定計(jì)算機(jī)結(jié)構(gòu)設(shè)計(jì),因此他們被統(tǒng)稱為低級(jí)語(yǔ)言。低級(jí)語(yǔ)言與高級(jí)語(yǔ)言的區(qū)別在于,高級(jí)語(yǔ)言更接近人類使用的自然語(yǔ)言,而且可移植性好,可以更容易地描述計(jì)算問題并利用計(jì)算機(jī)解決計(jì)算問題。

1.1.3 通用編程語(yǔ)言與專用編程語(yǔ)言

通用編程語(yǔ)言指能夠用于編寫多種用途的程序的編程語(yǔ)言(相對(duì)于專用編程語(yǔ)言而言),這類編程語(yǔ)言的語(yǔ)法中沒有專門用于特定應(yīng)用的特定程序元素。而專用編程語(yǔ)言則一般指應(yīng)用于某一特殊領(lǐng)域的編程語(yǔ)言,這類語(yǔ)言的語(yǔ)法中通常包含有專門用于特定應(yīng)用的程序元素,此外一些不含針對(duì)特定應(yīng)用的程序元素的編程語(yǔ)言由于其應(yīng)用領(lǐng)域較為狹窄,也被認(rèn)為是專用語(yǔ)言。

在目前常見的編程語(yǔ)言中:C、C++、C#、Python、Go、Java等是通用編程語(yǔ)言,HTML、MATLAB、PHP、SQL、Verilog、JavaScript等是專用語(yǔ)言。

1.1.4 解釋與編譯

高級(jí)語(yǔ)言按執(zhí)行方式的不同分為兩類:靜態(tài)語(yǔ)言與腳本語(yǔ)言。通過這兩類高級(jí)語(yǔ)言編寫的程序在計(jì)算機(jī)中有不同的執(zhí)行過程:靜態(tài)語(yǔ)言采用編譯執(zhí)行,腳本語(yǔ)言采用解釋執(zhí)行。但無(wú)論程序采用那種執(zhí)行方式,用戶使用程序的方法都可以是一致的。

編譯是指將程序源代碼一次性轉(zhuǎn)換成目標(biāo)代碼的過程。這個(gè)過程通常由被稱為編譯器(Compiler)的執(zhí)行編譯過程的計(jì)算機(jī)程序來完成。通常,源代碼是高級(jí)語(yǔ)言代碼,目標(biāo)代碼是機(jī)器代碼(二進(jìn)制指令),編譯器將高級(jí)語(yǔ)言源代碼編譯成機(jī)器語(yǔ)言目標(biāo)代碼,目標(biāo)代碼將被計(jì)算機(jī)執(zhí)行。

解釋是指將源代碼逐條轉(zhuǎn)換成目標(biāo)代碼同時(shí)逐條運(yùn)行目標(biāo)代碼的過程。解釋的過程是由根據(jù)源代碼的行數(shù)和執(zhí)行方式,逐條地提取源代碼的內(nèi)容將其轉(zhuǎn)換為目標(biāo)代碼并同時(shí)運(yùn)行的計(jì)算機(jī)程序——解釋器來執(zhí)行的。在解釋的過程中,高級(jí)語(yǔ)言和數(shù)據(jù)被一同輸入給解釋器,然后輸出運(yùn)行結(jié)果。

解釋和編譯的區(qū)別在于:編譯是一次性地翻譯源代碼,一旦程序被編譯得到目標(biāo)代碼后,再次執(zhí)行程序時(shí)就不必再次進(jìn)行編譯。而解釋在每次運(yùn)行時(shí)都需要解釋器對(duì)源代碼進(jìn)行解釋,即每次運(yùn)行時(shí)都同時(shí)需要源代碼與解釋器。對(duì)于靜態(tài)語(yǔ)言來講,由于編譯只進(jìn)行一次,所以程序的執(zhí)行速度與編譯過程的速度無(wú)關(guān),目標(biāo)代碼的運(yùn)行速度才是關(guān)鍵。因此,編譯器上一般都盡可能多地集成優(yōu)化技術(shù),使生成的目標(biāo)代碼具備更好的運(yùn)行效率。而對(duì)于腳本語(yǔ)言而言,由于程序在解釋的過程中運(yùn)行,故程序的運(yùn)行速度與解釋器解釋的速度息息相關(guān)。因此,解釋器上一般不會(huì)集成太多的優(yōu)化技術(shù),以防消耗時(shí)間,影響程序的運(yùn)行效率。解釋的執(zhí)行性能雖然略低,但是它卻可以很好的支持跨硬件或操作系統(tǒng)平臺(tái),而且對(duì)于源代碼的保留也對(duì)日后的升級(jí)維護(hù)提供了方便,非常適合一些非性能關(guān)鍵的程序運(yùn)行場(chǎng)景。

執(zhí)行方式優(yōu)點(diǎn)
編譯對(duì)于相同源代碼,編譯可以應(yīng)用更多的優(yōu)化過程,生成的目標(biāo)代碼執(zhí)行速度更快。對(duì)于目標(biāo)代碼不需要編譯器就可以執(zhí)行,在同類型的計(jì)算機(jī)操作系統(tǒng)上使用靈活
解釋解釋執(zhí)行需要保留原代碼,為日后的程序糾錯(cuò)與維護(hù)提供方便。而且只要存在解釋器,源代碼就可以在任意操作系統(tǒng)上執(zhí)行,可移植性好

在常見的編程語(yǔ)言中:C、C++、Java等都屬于采用編譯執(zhí)行的靜態(tài)語(yǔ)言。JavaScript、PHP、Python等都屬于采用解釋執(zhí)行的腳本語(yǔ)言。

1.2 C++概述 1.2.1 C++簡(jiǎn)史

1970年代,貝爾實(shí)驗(yàn)室的D.M.Ritchie致力于開發(fā)UNIX操作系統(tǒng),他需要一種簡(jiǎn)潔,能生成快速、高效的程序,并且能夠有效控制硬件的語(yǔ)言來完成這項(xiàng)工作。Ritchie希望這種語(yǔ)言能將低級(jí)語(yǔ)言的效率、硬件訪問能力和高級(jí)語(yǔ)言的簡(jiǎn)潔性、通用性和可移植性融合在一起。于是他在B語(yǔ)言的基礎(chǔ)上保留了它簡(jiǎn)練、更接近硬件等特點(diǎn),設(shè)計(jì)出了C語(yǔ)言。1980年代貝爾實(shí)驗(yàn)室的Bjarne Stroutstrup提出了C++語(yǔ)言。C++語(yǔ)言是C語(yǔ)言的擴(kuò)充:C語(yǔ)言是一種過程性語(yǔ)言(有關(guān)過程性語(yǔ)言的相關(guān)概念會(huì)在后文闡述),C++在C的基礎(chǔ)上增添了面向?qū)ο缶幊獭⒎盒途幊痰男绿匦?,同時(shí)C++保留了C高效靈活、可移植性好、易于理解等優(yōu)點(diǎn),克服了C語(yǔ)言類型檢查不嚴(yán)格、程序較大時(shí)難以查找和排除錯(cuò)誤等缺點(diǎn)。Bjarne Stroutstrup為C++加入了新的特性,但并沒有對(duì)C語(yǔ)言的組件進(jìn)行多大的改動(dòng),因此,理論上C++是C的超集,任何有效的C程序都是有效的C++程序,C++可以使用已有的C庫(kù)(庫(kù)是編程模塊的集合,可以從程序中調(diào)用它們)。C++語(yǔ)言誕生后,幾經(jīng)修改完善,于1998年頒布了ISO/MSIC++語(yǔ)言標(biāo)準(zhǔn),目前C++語(yǔ)言仍在不斷完善。下面我們將大致了解C++的各種特性。

1.2.2 過程性編程思想與結(jié)構(gòu)化編程技術(shù)

C++在C的基礎(chǔ)上增添了新的編程理念,在了解C++的新特性之前,我們先來看一下C所遵循的舊的編程理念。

首先我們來看一下計(jì)算機(jī)語(yǔ)言一般都要處理的兩個(gè)概念——數(shù)據(jù)和算法。簡(jiǎn)單來講,數(shù)據(jù)就是程序要處理和使用的信息,而算法就是程序處理和使用信息時(shí)所用的方法。數(shù)據(jù)與算法共同構(gòu)成了程序。

C語(yǔ)言在問世時(shí)屬于過程性語(yǔ)言,過程性語(yǔ)言在編程中強(qiáng)調(diào)的是算法方面。過程化編程首先需要確定程序應(yīng)采取哪些操作,然后再使用編程語(yǔ)言來實(shí)現(xiàn)操作,最后程序按照一系列流程生成特定的結(jié)果。

然而,隨著程序規(guī)模的擴(kuò)大,過程化編程會(huì)產(chǎn)生一些不可避免的問題:由于程序經(jīng)常使用分支語(yǔ)句,有許多舊式程序的執(zhí)行路徑非?;靵y,這對(duì)程序的閱讀與理解造成了極大的困難。為解決這種問題,人們開發(fā)了一種更有序的編程方法——結(jié)構(gòu)化編程。C具有使用這種編程方法的特性。結(jié)構(gòu)化編程,顧名思義,就是把程序的分支限制為一小組行為良好的結(jié)構(gòu),用各種行為良好的結(jié)構(gòu)來代替?zhèn)鹘y(tǒng)的分支,避免混亂的路徑。結(jié)構(gòu)化的程序由一些簡(jiǎn)單、有層次的程序流程框架組成,基本可分為順序、選擇與循環(huán)。C語(yǔ)言的詞匯表中也包含有這些結(jié)構(gòu)。

結(jié)構(gòu)化編程帶來的一個(gè)新原則是:自頂向下的設(shè)計(jì)。其理念是將大型的程序分解成小型的易于管理的任務(wù),如果任務(wù)仍然過大,就繼續(xù)將其分解為更小、更簡(jiǎn)單、更易于編寫的結(jié)構(gòu)。C語(yǔ)言中鼓勵(lì)使用這種方法,C中程序員可以通過編寫函數(shù)(程序單元)來表示各個(gè)任務(wù)模塊。結(jié)構(gòu)化編程技術(shù)反映了過程性的編程思想。

1.2.3 面對(duì)對(duì)象編程和泛型編程

接下來,我們來了解一下,C++在C的基礎(chǔ)上新增加的特性——面對(duì)對(duì)象編程和結(jié)構(gòu)化編程。

C++支持面對(duì)對(duì)象的程序設(shè)計(jì)方法,這種設(shè)計(jì)方法簡(jiǎn)稱OOP(Object Oriented Programming)。OOP是對(duì)結(jié)構(gòu)化設(shè)計(jì)以及模塊化、數(shù)據(jù)抽象等方法的發(fā)展。與強(qiáng)調(diào)算法的過程性編程不同,OOP強(qiáng)調(diào)數(shù)據(jù)。OOP所關(guān)注的不是解決問題的過程,而是問題本身。

在進(jìn)一步了解OOP的編程方法之前,我們首先要明確一下類和對(duì)象的概念。在C++中,類是一種規(guī)范,它描述了某種新數(shù)據(jù)的格式,而對(duì)象則是根據(jù)這種規(guī)范構(gòu)造的特定數(shù)據(jù)結(jié)構(gòu)。通俗的來講,客觀世界中的任何事物都可以稱之為對(duì)象,對(duì)象是某種特性和某種功能的事物,把具有共同特征(屬性)和操作(方法)的對(duì)象抽象出來便形成了類。對(duì)象是類的具體化,是某一個(gè)類的一個(gè)實(shí)例,例如:我們抽象出一個(gè)長(zhǎng)方形的類,這個(gè)類中有長(zhǎng)方形的各種屬性(長(zhǎng)、寬)還有對(duì)長(zhǎng)方形的操作(求面積、求周長(zhǎng)),之后我們定義了一個(gè)具體的長(zhǎng)為2寬為4的長(zhǎng)方形,這個(gè)具體的長(zhǎng)方形就是我們這個(gè)長(zhǎng)方形的類的一個(gè)對(duì)象。面對(duì)對(duì)象的程序主要就是由類和對(duì)象建立起來的。

OOP程序設(shè)計(jì)方法首先需要設(shè)計(jì)類,通常,類規(guī)定了可以用來表示對(duì)象的數(shù)據(jù)以及可以對(duì)這些數(shù)據(jù)所執(zhí)行的操作,它們準(zhǔn)確的表達(dá)了程序要處理的東西。之后我們就可以設(shè)計(jì)一個(gè)使用類的對(duì)象的程序,程序?qū)⒏鶕?jù)類的定義創(chuàng)建一個(gè)對(duì)象,該對(duì)象保存了所有的用來表示它的數(shù)據(jù)值,程序也可以通過類中的方法來對(duì)對(duì)象進(jìn)行操作。這種從類(低級(jí)組織)到程序(高級(jí)組織)的處理過程被稱為自下向上的編程。

OOP程序主要是由類和對(duì)象建立起來的,具有封裝性、繼承性、和多態(tài)性的特點(diǎn)。

  • 封裝:封裝是一種信息隱藏技術(shù),通過封裝將數(shù)據(jù)和其有關(guān)的行為隱藏起來,而將一部分行為作為對(duì)外的接口。在OOP的程序概念中,把數(shù)據(jù)和與這些數(shù)據(jù)有關(guān)的操作結(jié)合在一起形成一個(gè)有機(jī)的整體,稱為封裝。C++中封裝是由類實(shí)現(xiàn)的。
  • 繼承:繼承,顧名思義,它使某個(gè)類除了具有特定的屬性和方法外,還可以繼承其他類的屬性和方法。繼承是OOP中最重要的特征,C++提供的類的繼承機(jī)制允許我們?cè)诒3衷蓄惖幕A(chǔ)上,通過繼承進(jìn)行擴(kuò)充為新的類。
  • 多態(tài):多態(tài)性是指不同的對(duì)象接受到不同的消息時(shí)會(huì)產(chǎn)生不同的動(dòng)作。C++支持兩種多態(tài)性,一種是程序編譯時(shí)的靜態(tài)多態(tài)性,一種是程序運(yùn)行時(shí)的動(dòng)態(tài)多態(tài)性。靜態(tài)多態(tài)性通過函數(shù)重載實(shí)現(xiàn),動(dòng)態(tài)多態(tài)性通過虛函數(shù)機(jī)制實(shí)現(xiàn)(這兩種方式會(huì)在以后的文章中進(jìn)行講解)。
    封裝可以保護(hù)數(shù)據(jù),避免其遭受不適當(dāng)?shù)脑L問;繼承可以讓我們使用舊類派生出新類;多態(tài)讓我們可以為運(yùn)算符和函數(shù)創(chuàng)建多個(gè)定義,然后通過程序上下文來確定使用哪個(gè)定義。OOP將重點(diǎn)放在了表達(dá)概念上,而不是任務(wù)的過程上。

此外,OOP方法有助于創(chuàng)建可重用的代碼。這也體現(xiàn)了C++真正的優(yōu)點(diǎn)之一:可以方便的重用和修改現(xiàn)有的代碼。

C++還支持另外的一種編程模式:泛型編程。它與OOP的目標(biāo)類似,都是希望可以讓重用代碼和抽象通用概念的技術(shù)更加簡(jiǎn)潔。不過泛型編程與OOP的區(qū)別在于:OOP強(qiáng)調(diào)編程的數(shù)據(jù)方面,而泛型編程強(qiáng)調(diào)的的卻是要獨(dú)立于特定的數(shù)據(jù)類型。泛型具有在多種數(shù)據(jù)類型上皆可操作的含義,這點(diǎn)與模板類似,它指的是創(chuàng)建獨(dú)立于類型的代碼。泛型編程需要對(duì)語(yǔ)言進(jìn)行擴(kuò)展,以便只編寫一個(gè)泛型(不是特定類型的)函數(shù)就能將其用于各種實(shí)際類型。C++也提供了完成這種任務(wù)的機(jī)制。

C++融合了傳統(tǒng)的過程性方法、OOP和泛型編程的理念,OOP賦予了C++高級(jí)抽象的能力,C語(yǔ)言的部分則為C++提供了低級(jí)的硬件訪問,賦予了C++緊密聯(lián)系硬件的能力。C++所強(qiáng)調(diào)的實(shí)用價(jià)值成就了C++的廣泛傳播。

1.3 C++程序開發(fā)概述 1.3.1 C++程序開發(fā)過程

一個(gè)C++程序通常由程序開發(fā)環(huán)境、C++語(yǔ)言和C++標(biāo)注庫(kù)組成。在C++程序開發(fā)環(huán)境下,一個(gè)C++程序的開發(fā)通??梢源笾路譃榫庉嫞╡dit)、預(yù)處理(preprocess)、編譯(compile)、鏈接(link)、裝入(load)、執(zhí)行(execute)六個(gè)階段。一般在開發(fā)環(huán)境中,除編輯源代碼需要我們自己完成外,其余的步驟都可以通過計(jì)算機(jī)程序自動(dòng)完成。

  • 編輯:使用編輯程序編輯修改程序,將其保存在文件中,這個(gè)文件即為程序的源代碼(文件拓展名一般為.cpp)
  • 預(yù)處理、編譯:這兩個(gè)步驟通過編譯程序來完成。預(yù)處理階段處理各種預(yù)處理命令,并生成一個(gè)臨時(shí)C++源代碼文件,交由編譯階段進(jìn)行語(yǔ)法檢查和語(yǔ)義分析。編譯階段將源代碼文件翻譯生成目標(biāo)代碼(Object Code)文件(文件拓展名一般為.obj)。
  • 鏈接:連接階段將目標(biāo)代碼和其他代碼連接起來。連接程序?qū)⒛繕?biāo)程序(可能有多個(gè),一個(gè).cpp文件生成一個(gè))與C++標(biāo)準(zhǔn)庫(kù)的代碼拼裝成一個(gè)完整的可執(zhí)行文件(文件拓展名一般為.exe)
  • 裝入:裝入程序?qū)⒖蓤?zhí)行文件存入計(jì)算機(jī)主存,并為程序的執(zhí)行做好一切準(zhǔn)備。
1.3.1 各階段常見錯(cuò)誤

在上述各階段中都可能出現(xiàn)錯(cuò)誤,其中語(yǔ)法錯(cuò)誤最為常見,但同時(shí)語(yǔ)法錯(cuò)誤也最容易修改和排除。這類錯(cuò)誤可以由編譯器找出并給予提示。程序運(yùn)行期間也可能會(huì)出現(xiàn)導(dǎo)致程序終止執(zhí)行的致命錯(cuò)誤,這類錯(cuò)誤通過分析程序流程也比較容易排除。還有最難排除的兩類錯(cuò)誤——程序的邏輯錯(cuò)誤和非致命性錯(cuò)誤,這兩類錯(cuò)誤需要仔細(xì)查看程序,并利用相關(guān)方法和技巧予以排除。

總結(jié):

本章介紹了入門學(xué)習(xí)C++語(yǔ)言的一些預(yù)備知識(shí)、C++語(yǔ)言的3種特性與C++程序開發(fā)的大致流程。程序設(shè)計(jì)語(yǔ)言主要分為兩類:針對(duì)特定硬件的低級(jí)語(yǔ)言和可以跨平臺(tái)運(yùn)行和可移植性較好的高級(jí)語(yǔ)言,C++語(yǔ)言是一種高級(jí)語(yǔ)言。C++與通過解釋執(zhí)行的腳本語(yǔ)言不同,C++屬于靜態(tài)語(yǔ)言,在運(yùn)行過程中需要編譯器將源代碼轉(zhuǎn)換為機(jī)器代碼。C++在C結(jié)構(gòu)化編程的基礎(chǔ)上新增添了OPP和泛型編程的新特性。由于C++是C的拓展,有效的C程序也是有效的C++程序,C++也可以使用C庫(kù),這也使得C++不僅具有高級(jí)抽象的能力還具有低級(jí)硬件訪問能力。此外C++的新特性還有助于提高模塊化和創(chuàng)建可重用代碼,節(jié)省了編程時(shí)間,提高了編程效率與可靠性。C++程序的開發(fā)一般要經(jīng)過6個(gè)階段,我們?cè)陂_發(fā)環(huán)境下,可以在編輯器中編寫C++語(yǔ)言程序,并保存為源代碼文件,它們通過編譯程序進(jìn)行預(yù)處理與編譯生成機(jī)器代碼組成的目標(biāo)文件,最后通過鏈接生成計(jì)算機(jī)可以執(zhí)行的可執(zhí)行文件。C++的種種新特性使得C++至今仍然在被廣泛的使用。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

文章名稱:easy-cpp系列簡(jiǎn)明C++教程(第一章)-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://muchs.cn/article22/idejc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、虛擬主機(jī)、品牌網(wǎng)站設(shè)計(jì)外貿(mào)建站、網(wǎng)站策劃服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)