自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

幾分鐘教您玩轉(zhuǎn)C++程序

開(kāi)發(fā) 后端
C++程序?qū)瘮?shù)的處理方式是不同的。extern "C"是使C++能夠調(diào)用C寫(xiě)作的庫(kù)文件的一個(gè)手段,如果要對(duì)編譯器提示使用C的方式來(lái)處理函數(shù)的話,那么就要使用extern "C"來(lái)說(shuō)明。

許多編程人員學(xué)習(xí)C++程序總結(jié)經(jīng)驗(yàn)為,有的覺(jué)得C++語(yǔ)言是一門(mén)獨(dú)立的語(yǔ)言,并不是在C語(yǔ)言的基礎(chǔ)上,可以直接學(xué)習(xí)C++不必先從C下手,希望通過(guò)本文的介紹能給大家?guī)?lái)有用的知識(shí)。

C++是個(gè)強(qiáng)大的語(yǔ)言,可以用于做別的語(yǔ)言做不了的工作。但是,這種強(qiáng)大功能是有代價(jià)的。開(kāi)始使用C++時(shí),你可能會(huì)遇到內(nèi)存溢出和訪問(wèn)失效等問(wèn)題,使程序死機(jī)。這里用最簡(jiǎn)短的篇幅介紹C++語(yǔ)言基礎(chǔ)。C++語(yǔ)言本身有專(zhuān)著介紹,這種書(shū)還特別厚,所以別指望我能用三言?xún)烧Z(yǔ)說(shuō)清楚。讀者學(xué)完本書(shū)并使用C++ Builder一般時(shí)間之后,***對(duì)C++語(yǔ)言再作更深入的了解。

C++可以最充分地利用面向?qū)ο缶幊?OOP)的優(yōu)勢(shì)。OOP不只是一個(gè)新名詞,而有它的實(shí)際意義,可以生成可復(fù)用的對(duì)象。新術(shù)語(yǔ) 對(duì)象(object),和前面介紹的構(gòu)件一樣,是完成特定編程任務(wù)的軟件塊(構(gòu)件是對(duì)象,但對(duì)象不全是構(gòu)件,稍后會(huì)解釋這點(diǎn))。

對(duì)象只向用戶(hù)(使用對(duì)象的編程人員)顯示必須的部分,從而簡(jiǎn)化對(duì)象的使用。用戶(hù)不必知道的所有內(nèi)部機(jī)制都隱藏在幕后。這一切都包括在面向?qū)ο缶幊痰母拍钪?。OOP可以用模塊化方法進(jìn)行編程,從而避免每次從頭開(kāi)始。

C++ Builder程序是面向OOP的,因?yàn)?FONT>C++ Builder大量使用構(gòu)件。生成構(gòu)件后(你生成的或C++ Builder內(nèi)置的構(gòu)件),就可以在任何C++ Builder程序中重復(fù)使用。構(gòu)件還可以擴(kuò)展,通過(guò)繼承生成具有新功能的新構(gòu)件。最妙的是,構(gòu)件隱藏了所有內(nèi)容細(xì)節(jié),使編程人員能集中精力充分利用構(gòu)件。

入門(mén)簡(jiǎn)介

C++之前先有C語(yǔ)言,C++是建立在C語(yǔ)言之上的,稱(chēng)為“帶類(lèi)的C語(yǔ)言”。這個(gè)C語(yǔ)言基礎(chǔ)在當(dāng)今的C++程序中仍然很重要。C++并不是取代C,而是補(bǔ)充和支持C。本章余下部分和下幾章主要介紹C++中來(lái)源于C語(yǔ)言的部分。

實(shí)際上,這里介紹的是C語(yǔ)言,第2課"C++基礎(chǔ)"中才轉(zhuǎn)入C++。讀者不必關(guān)心哪個(gè)來(lái)自C,哪個(gè)來(lái)自C++,因?yàn)檫@些全在C++中。C++語(yǔ)言很難按順序介紹,因?yàn)槲覀円榻B的所有特性都是交叉的。我準(zhǔn)備的一次介紹一塊,然后拼湊起來(lái)。到第3課"高級(jí)C++"結(jié)束,你將對(duì)C++語(yǔ)言有個(gè)完整的了解。一下子沒(méi)有掌握某個(gè)概念也沒(méi)關(guān)系,有些概念必須經(jīng)過(guò)實(shí)踐才能完全了解。


為什么啰嗦這么一大通呢?就是因?yàn)椋恢币詠?lái)泛濫于程序員社群的“語(yǔ)言之爭(zhēng)”,背后真正的原因其實(shí)并不在于語(yǔ)言實(shí)質(zhì)上的優(yōu)劣,而在于觀察者的眼睛。在觀察者的眼睛里面,語(yǔ)言并非一門(mén)工具,而是自己花了N多時(shí)間(其中尤數(shù)C++為最)來(lái)“修煉”的技能,對(duì)于這樣的技能,被否定無(wú)疑等同于自己被否定。

所以,從心理學(xué)上講,語(yǔ)言并不是工具(盡管一直有這么一種呼吁),而是信仰。這樣的信仰在越是花得時(shí)間久的語(yǔ)言上越是激烈。有趣的是,幾乎所有的“熱鬧”的社群都有這樣的現(xiàn)象,Java、Python、Ruby…莫不如是;因?yàn)榫退阏Z(yǔ)言本身不復(fù)雜,程序員仍然還是要投入大量的精力去學(xué)習(xí)各種各樣的框架類(lèi)庫(kù)(想想Java的那些框架?)。因此這些語(yǔ)言社區(qū)的信仰未必不比C++社群的強(qiáng)烈。

然而,一旦弄清我們?yōu)槭裁磿?huì)把語(yǔ)言當(dāng)成信仰,就非常有助于擺脫在看待語(yǔ)言時(shí)的“自我服務(wù)偏見(jiàn)”,從客觀的角度去看待問(wèn)題?!爱?dāng)你看到的是支持某個(gè)意見(jiàn)的證據(jù)時(shí),試著去想一想有哪些證據(jù)是不支持它的”。

那么為什么要擺脫自我服務(wù)偏見(jiàn)?說(shuō)小了,是為了成為一個(gè)更優(yōu)秀的程序員(誰(shuí)也不希望因?yàn)槠?jiàn)而去使用一門(mén)低效的語(yǔ)言乃至不妥當(dāng)?shù)恼Z(yǔ)言)。說(shuō)大了是節(jié)省生命(因?yàn)槠?jiàn)可能導(dǎo)致越陷越深,浪費(fèi)時(shí)間)。 所以,如果你能夠理性的思考我們將要討論的問(wèn)題,避免自我服務(wù)偏見(jiàn)(就當(dāng)你從來(lái)沒(méi)有花時(shí)間在C++上一樣)。那么我們便可以開(kāi)始討論真正的問(wèn)題了。

現(xiàn)在,幾乎每個(gè)學(xué)習(xí)C++程序的都知道C++的核心問(wèn)題是其復(fù)雜性;甚至本身不在C++社群的,也知道這是事實(shí)。群眾的眼睛是雪亮的,何況這還是個(gè)太顯而易見(jiàn)的事實(shí)。

但看了無(wú)數(shù)篇闡述C++復(fù)雜性的文章,和爭(zhēng)論C++復(fù)雜性的吐沫星子(包括我前段時(shí)間寫(xiě)的兩篇關(guān)于C++的總結(jié))。我始終都有一個(gè)感覺(jué)——沒(méi)分析透,就跟盲人摸象一樣。正如“Why C++”的一位讀者批評(píng)的,我在文章里面沒(méi)有寫(xiě)明到底哪些是C++的“非本質(zhì)復(fù)雜性”。

當(dāng)然,我自己憑感覺(jué)就能知道,而接觸C++一段時(shí)間的人大致也能知道,但新手乃至非新手則對(duì)我所謂的“非本質(zhì)復(fù)雜性”根本沒(méi)有一個(gè)具體的認(rèn)識(shí),這就使得那篇“Why C++”脫離了原本的意圖——面向所有C++使用者和學(xué)習(xí)者。

同樣的原因,在寫(xiě)了“你應(yīng)當(dāng)如何學(xué)習(xí)C++”一文之后,當(dāng)孟巖先生邀請(qǐng)我給《程序員》寫(xiě)一個(gè)系列的文章,介紹一下我在接觸C++的過(guò)程中的態(tài)度和認(rèn)識(shí)轉(zhuǎn)變時(shí),我雖然非常高興的答應(yīng)了,但直到現(xiàn)在3個(gè)月過(guò)去了還是顆粒無(wú)收。

為什么?因?yàn)槲矣X(jué)得真正本質(zhì)的問(wèn)題沒(méi)有被清晰的觸摸到;所以直到現(xiàn)在我都沒(méi)有動(dòng)筆,免得廢話說(shuō)了一大堆,除了能被當(dāng)成小說(shuō)讀讀之外,對(duì)真正考慮是否要學(xué)習(xí)乃至使用C++的人未必有什么實(shí)際用處。

然而,這么個(gè)念頭一直都放在潛意識(shí)里面。前一陣子和Bjarne通信,談到了關(guān)于C++復(fù)雜性的一些想法,在郵件里面總結(jié)了一下C++的復(fù)雜性來(lái)源,感覺(jué)思路清晰了許多。而這篇文章要達(dá)到的目的,正是傳達(dá)對(duì)C++的復(fù)雜性的一個(gè)具體而明確的認(rèn)識(shí),有了這個(gè)認(rèn)識(shí)作為支持,我們便可以推導(dǎo)出學(xué)習(xí)C++的***(實(shí)踐者)的方法。

為什么要學(xué)習(xí)(并使用)C++

顯然,如果找不出要學(xué)習(xí)C++程序的理由,那么談什么“正確的學(xué)習(xí)方法”等于是廢話。

首先重復(fù)一句Bjarne的話:“我們的系統(tǒng)已經(jīng)是極度復(fù)雜的了,為了避開(kāi)C++的復(fù)雜性而干脆不用C++(Linus的做法),無(wú)異于因噎廢食?!痹谒锌捎肅和C++的領(lǐng)域,C++都是比C更好的語(yǔ)言。當(dāng)我說(shuō)“更好的”時(shí)候,我說(shuō)的是C++擁有比C更安全的類(lèi)型檢查、更好的抽象機(jī)制、更優(yōu)秀的庫(kù)。

當(dāng)然,凡事都有例外,如果你做的項(xiàng)目1)不大。2)編碼中用不到什么抽象機(jī)制,甚至ADT(抽象數(shù)據(jù)類(lèi)型,例如std::complex這種不含多態(tài)和繼承的)也用不到,RAII也用不到,異常也用不到。3)你連基礎(chǔ)庫(kù)(如,簡(jiǎn)化資源管理的智能指針、智能容器)都用不著。

【編輯推薦】

  1. 簡(jiǎn)介學(xué)習(xí)C++總結(jié)之談
  2. 對(duì)C++庫(kù)函數(shù)進(jìn)行學(xué)習(xí)探索總結(jié)筆記
  3. C++類(lèi)庫(kù)設(shè)計(jì)的基本構(gòu)思與方法
  4. C++語(yǔ)言真的還有市場(chǎng)價(jià)值?
  5. C++類(lèi)庫(kù)設(shè)計(jì)的基本構(gòu)思與方法
責(zé)任編輯:chenqingxiang 來(lái)源: 51CTO.com
相關(guān)推薦

2010-01-21 14:51:02

C++函數(shù)指針

2010-01-12 18:20:31

Visual C++

2010-01-06 13:39:51

擴(kuò)展Jquery的Js

2010-01-12 10:28:58

C++復(fù)雜性

2010-03-01 18:13:22

Python程序

2010-03-10 13:55:35

交換機(jī)故障

2010-02-23 14:19:30

Python目錄操作

2010-01-26 14:53:43

C++

2009-12-21 13:51:54

ADO.NET處理

2010-03-04 10:01:01

Android基本組件

2013-07-02 09:58:38

ClojureClojure教程

2016-09-30 15:13:01

Python代碼

2009-12-29 09:01:46

ADSL斷線

2010-01-20 10:40:44

C++Test

2010-01-06 15:35:06

JSON對(duì)象

2024-12-03 15:38:14

2010-01-27 09:46:32

C++Builder開(kāi)

2024-04-19 09:37:49

Ollama大語(yǔ)言模型開(kāi)源

2009-11-25 17:22:12

路由器安裝

2017-08-03 17:30:26

戴爾IoT設(shè)備
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)