欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C++的學(xué)習感想

 很多人把學(xué)習C++語(yǔ)言當成學(xué)習VC了,我曾經(jīng)就走過(guò)這樣的彎路。當學(xué)了很長(cháng)時(shí)間的VC后還是得回過(guò)頭來(lái)學(xué)習C++語(yǔ)言本身。
   學(xué)一個(gè)月,可以用VC寫(xiě)一些小程序自己玩玩
  學(xué)兩個(gè)月,可以用VC寫(xiě)像樣點(diǎn)的東西在周?chē)嗣媲办澎?br>  學(xué)三個(gè)月,可以用VC給老板開(kāi)始干活了
  學(xué)六個(gè)月,開(kāi)始重頭去學(xué)C++
  學(xué)一年后,決定要不要繼續,if(繼續) 學(xué)習MFC、ATL、STL、C#、BCB、Network、Databa
se、Algorithm... else 開(kāi)始就是個(gè)錯誤
  學(xué)三年后,學(xué)會(huì )怎么來(lái)用編程語(yǔ)言來(lái)解決問(wèn)題,VC、BCB等都只是解決問(wèn)題的工具。這時(shí)候你如果還在學(xué)C++,你可以從事軟件開(kāi)發(fā)這個(gè)很有“前途”的職業(yè)了。

很多人把學(xué)習C++語(yǔ)言當成學(xué)習VC了,我曾經(jīng)就走過(guò)這樣的彎路。當學(xué)了很長(cháng)時(shí)間的VC后

還是得回過(guò)頭來(lái)學(xué)習C++語(yǔ)言本身。

那么學(xué)習C++從何處入手了?

C++語(yǔ)言相對于C語(yǔ)言來(lái)說(shuō)引入了兩個(gè)大的新東西,一個(gè)就是面向對象(具體來(lái)將就是類(lèi)

),另外就是模板技術(shù)(模板編程或者叫泛型編程是進(jìn)來(lái)非常流行的技術(shù),在C#中雖然還

沒(méi)有對泛型編程的支持,但是相信在將來(lái)也一定會(huì )加入這一功能),模板是C++中比較復

雜的部分,但是作為一個(gè)真正的C++程序員,這部分很重要。尤其是對C++標準程序庫

的掌握尤為重要。

剛開(kāi)始的時(shí)候千萬(wàn)不要直撲VC中的各種向導和設計器。因為依賴(lài)開(kāi)發(fā)環(huán)境生成的很多代碼

會(huì )把我們搞糊涂,也不利于我們學(xué)習C++語(yǔ)言本身。我的建議就是生成一個(gè)空的控制臺工

程,然后自己向里面添加文件。

如下就是一個(gè)簡(jiǎn)單的控制臺程序:

//robindy/list.cpp

#include <iostream>

#include <list>

using namespace std;

int main()

{

list<char> coll;

for(char c = 'a'; c <= 'z'; ++c)

{

coll.push_back(c);

}

list::const_iterator pos;

for(pos = coll.begin(); pos != coll.end(); ++pos)

{

cout << *pos << ' ';

}

cout << endl;

return 0;

}

對using namespace std;的解釋?zhuān)?/p>

所謂namespace,是指標識符的各種可見(jiàn)范圍。C++標準程序庫中的所有標識符都被定義于一個(gè)名為std的namespace中。

由于namespace的概念,使用C++標準程序庫的任何標識符時(shí),可以有三種選擇:

1、直接指定標識符。例如std::ostream而不是ostream。完整語(yǔ)句如下:

std::cout << std::hex << 3.4 << std::endl;

2、使用using關(guān)鍵字。

using std::cout;

using std::endl;

以上程序可以寫(xiě)成

cout << std::hex << 3.4 << endl;

3、最方便的就是使用using namespace

std;這樣命名空間std內定義的所有標識符都有效(曝光)。就好像它們被聲明為全局變量一樣。那么以上語(yǔ)句可以如下寫(xiě):

cout << hex << 3.4 << endl;

這段程序用到了標準模板庫,在屏幕上打印字符a~z,其中main函數的標記式只有兩種是被

C++標準委員會(huì )接受的,只有以下兩種寫(xiě)法是符合C++標準的,是可移植的。即:

int main()

{

}

int main(int argc, char* argv[])

{

}

C++在main()的末尾定義了一個(gè)隱式的return 0; 但是在VC中必須顯式的寫(xiě)出return語(yǔ)句。

在BCB中可以不寫(xiě)return而編譯通過(guò)。

這段程序中用到了STL中的容器:鏈表。先是向鏈表中插入26個(gè)字母,然后從遍歷鏈表,輸

出字符。

我不建議初學(xué)者一開(kāi)始就從模板庫入手,但是我建議應該逐漸地有意識地學(xué)習模板庫。如

我們應該熟悉cout和cin的用法(位于iostream),而減少使用老式的C函數庫中printf和sc

anf等。

從控制臺入手的好處就是避免我們理解VC中向導等工具生成的其他代碼,整個(gè)程序的流程

很清楚。新手學(xué)習VC的一大難點(diǎn)就是搞不清楚整個(gè)程序的流程(從那條語(yǔ)句開(kāi)始執行,然后

從那條語(yǔ)句退出。MFC做了太多封裝,掩蓋了事實(shí)的真相,^_^)。通過(guò)控制臺我們可以很快

地學(xué)習C++語(yǔ)言中的很多新特性。如類(lèi)的封裝、繼承和多態(tài)等。通過(guò)這個(gè)時(shí)期的學(xué)習,要

能夠掌握三個(gè)東西: C++關(guān)鍵字、語(yǔ)法(重點(diǎn)是和面向對象有關(guān)的,以及模板)、C++

標準程序庫(知道怎么使用即可,要徹底掌握需要很多時(shí)間和精力)。至于與界面有關(guān)的

東東(MFC中很大一部分是與界面相關(guān)的類(lèi),所以我認為MFC很臃腫而無(wú)聊!回頭看過(guò)以前

用MFC寫(xiě)的程序,有一種“垃圾”的感覺(jué)。)

自己做個(gè)測試:

寫(xiě)一個(gè)控制臺程序,在其中體現出類(lèi)的繼承,函數重載,動(dòng)態(tài)多態(tài)(通過(guò)虛函數實(shí)現),

數據封裝,C++標準庫的運用。

如果你能夠輕松搞定,恭喜你,你已經(jīng)通過(guò)C++語(yǔ)言關(guān)了。不過(guò)C++實(shí)在是一個(gè)復雜的

東東,其中有各種千奇百怪的語(yǔ)法現象,如果沒(méi)有三、五年的功力,千萬(wàn)不要說(shuō)自己懂C+

+。^_^。

推薦書(shū)籍《Thinking in C++》(有精力的話(huà),可以直接讀原版)

《Essential C++》

本來(lái)我計劃繼續說(shuō)說(shuō)如何來(lái)進(jìn)入C++世界的,但是琢磨了一下,覺(jué)得還是要先解決一個(gè)問(wèn)

題:為什么要學(xué)習C++?我覺(jué)得在軟件開(kāi)發(fā)這個(gè)行當了里除了為了生計外,學(xué)習新東西都

是應該以興趣為導向的。所以撇開(kāi)我個(gè)人對C++的偏愛(ài),我想為你樹(shù)立起學(xué)習C++的信

心和興趣。當初我對自己學(xué)習C++的第一個(gè)忠告就是:不能半途而廢!起初是興趣驅動(dòng),

后來(lái)則是生計所需,最后還是回歸到了興趣。畢竟我從中得到了樂(lè )趣,這就足夠了。在學(xué)

一個(gè)新東西前,解決動(dòng)機問(wèn)題很重要。就如同殺人一樣,如果只是突然興起,那么等嘗試

了以后,是沒(méi)有成就感的。革命先烈們?yōu)槲覀冏鞒隽撕芎玫陌駱?,就算我們在學(xué)習C++的

道路上遇到了太多困惑和痛苦,但是我們畢竟為自己的信念做了努力,我們知道自己在

做什么,知道自己在追求什么。

C++適合做什么樣的開(kāi)發(fā)?

C++是一門(mén)廣泛用于工業(yè)軟件研發(fā)的大型語(yǔ)言。具有很高的復雜性和解決問(wèn)題的能力。C

++不僅在開(kāi)發(fā)上極具價(jià)值,同時(shí)在學(xué)術(shù)界也就有很高的價(jià)值。有關(guān)C++的文章應該可以

用浩如煙海來(lái)形容了吧。C++的世界級經(jīng)典書(shū)籍也是數不勝數。然而,目前開(kāi)發(fā)語(yǔ)言是如

此地繁榮,就連微軟也在推出了新的開(kāi)發(fā)語(yǔ)言C#。一個(gè)不可否認的現實(shí)是,在低階程序設

計領(lǐng)域,C++擠壓著(zhù)C同時(shí)也在承受著(zhù)C的強烈反彈,前段時(shí)間看了據說(shuō)是微軟操作系統源代

碼的東東,其中很多還是C語(yǔ)言。而在高階程序設計領(lǐng)域,Java和C#正在不斷蠶食著(zhù)C++的

地盤(pán)。也許Java和C#的狂潮終將迫使C++回歸本位— 回到它有著(zhù)根本性?xún)?yōu)勢的開(kāi)發(fā)領(lǐng)域:

低級系統程序設計、高級大規模高性能應用設計、嵌入式程序設計、通用程序設計以及數

值科學(xué)計算等。果真如此,我認為這未嘗不是一件好事。電力系統軟件所要求的高性能和

大規模數值計算正是C++所擅長(cháng)的。就我所接觸的南瑞和魯能,很多涉及到電力系統計算

的軟件如PAS等,都是用C++來(lái)開(kāi)發(fā)的。在電力系統軟件開(kāi)發(fā)這塊陣地,C++大有用武之

地。C++吸引如此之多的智力投入,以至于這個(gè)領(lǐng)域的優(yōu)秀作品,包括重量級的軟件產(chǎn)品、

程序庫以及書(shū)籍等,數不勝數。在C++之父Bjarne Stroustrup的個(gè)人主頁(yè)上,有一頁(yè)

列出了一些(全部或大部分)使用C++編寫(xiě)的系統、應用程序和庫。

下面是一些例子(摘自榮耀網(wǎng)站):

o Adobe Systems:所有主要應用程序都使用C++開(kāi)發(fā)而成,比如Photoshop & ImageReady

、Illustrator和Acrobat等。

o Maya:知道“蜘蛛人”、“指環(huán)王”的電腦特技是使用什么軟件做出來(lái)的嗎?沒(méi)錯,就

是Maya。

o Amazon.com:使用C++開(kāi)發(fā)大型電子商務(wù)軟件。

o Apple:部分重要“零件”采用C++編寫(xiě)而成。

o AT&T:美國最大的電訊技術(shù)提供商,主要產(chǎn)品采用C++開(kāi)發(fā)。

o Google:Web搜索引擎采用C++編寫(xiě)。

o IBM:OS/400。

o Microsoft:以下產(chǎn)品主要采用C++(Visual C++)編寫(xiě):

o Windows XP Windows NT:NT4、2000 Windows 9x:95、98、Me Microsoft

Office:Wo

rd、Excel、Access、PowerPoint、Outlook Internet Explorer,包括Outlook

Express

Visual Studio:Visual C++、Visual Basic、Visual FoxPro .NET

Framework類(lèi)庫采用C

#編寫(xiě),但C#編譯器自身則使用C++編寫(xiě)而成。Exchange SQL Server FrontPage Project

所有游戲......

o KDE:K Desktop Environment(Linux)。

o Symbian OS:最流行的蜂窩電話(huà)OS之一。

很多新手特別容易會(huì )對自己所學(xué)習的東東產(chǎn)生疑惑、迷茫。覺(jué)得自己學(xué)這個(gè)東西,花了這

么多時(shí)間有沒(méi)有用,會(huì )不會(huì )過(guò)時(shí)?這種思想很普遍。在一些論壇上經(jīng)常會(huì )看到一些各語(yǔ)言

的優(yōu)劣比較,知道自己所學(xué)語(yǔ)言的優(yōu)劣也好,但是如果一味停留在這個(gè)層面就沒(méi)有用了。

任何語(yǔ)言都只是工具而已。重要的是使用工具的人!就我個(gè)人的經(jīng)驗來(lái)講,真正處于業(yè)界

搞開(kāi)發(fā)的人都愿意使用成熟的、為自己所熟知的技術(shù)來(lái)完成工作。而新手都喜歡用一些比

較新的技術(shù)來(lái)做開(kāi)發(fā),而且喜歡追求新奇(從界面很容易看出來(lái),花花綠綠的界面多半出

自新手)。其實(shí),安于用一些效率可能低下、擴展性和維護性差的方法來(lái)解決問(wèn)題并不是

開(kāi)發(fā)人員的錯。他們只是在完成工作而已。但是作為一個(gè)真正有上進(jìn)心的開(kāi)發(fā)人員,我們

應該使用更優(yōu)雅和高效的編程技術(shù),這才是我們逐漸變成編程“大牛”的好習慣。老是停留在

原地,很容易被淘汰的。在軟件開(kāi)發(fā)這個(gè)行當,尤其如此。無(wú)論是對學(xué)生,還是一線(xiàn)開(kāi)發(fā)

人員,我覺(jué)得都不應該產(chǎn)生“書(shū)讀夠了”的感嘆!我有時(shí)候喜歡將以前看過(guò)的書(shū)翻出來(lái)再

看,每次總能體會(huì )到一些新東西。有關(guān)C++語(yǔ)言的書(shū)籍更是如此,而且我覺(jué)得我所起的題

目不是很好。為什么?因為我覺(jué)得學(xué)習語(yǔ)言還只是新手跨入軟件開(kāi)發(fā)“地獄”的第一步,

單單學(xué)習語(yǔ)言本身是遠遠不夠的,還要學(xué)習相關(guān)的程序庫(C++當然首選是先學(xué)習C++標準

程序庫)、相關(guān)的平臺技術(shù)(如.NET),說(shuō)得更遠一點(diǎn),還要鍛煉對目標問(wèn)題的分析、

歸納能力等等。工作之前,技術(shù)路線(xiàn)自己作主,工作之后,絕大多數程序員將被公司技術(shù)

路線(xiàn)左右。所以,趁現在還有時(shí)間,可以學(xué)一些自己感興趣的。如果想搞軟件開(kāi)發(fā),特別是

電力系統軟件的開(kāi)發(fā),學(xué)好C++不會(huì )令我們失望。當我們進(jìn)入C++的前門(mén),然后經(jīng)過(guò)一段

黑暗之路,再從后門(mén)出來(lái)到達光明頂后,我們會(huì )體味到“一覽眾山小”的感覺(jué)。

推薦書(shū)籍:

《編程高手箴言》梁肇新(用過(guò)超級解霸的都應該知道吧,^_^)寫(xiě)的第一本書(shū),其中有幾

章還是值得一讀的。在這本書(shū)中,梁告訴我們,學(xué)東西要耐心,要耐得住“寂寞”,走自

己的路,讓別人去“說(shuō)”吧!

最近比較忙,原來(lái)打算緊扣主題講講一些具體的C++語(yǔ)言的細節的,但還是抽不出大段的

時(shí)間了。所以,現在只能再漫談一些關(guān)于C++的故事了。

C++源于C語(yǔ)言,還記得很久以前學(xué)習C語(yǔ)言的時(shí)光(那是一段快樂(lè )而充實(shí)的時(shí)光),可是

現在學(xué)習C++,并不是在C的基礎上加上了類(lèi)而已,如果這樣認為,我們是耍不好C++的

。因此,C++絕不是C的升級或擴充,我們應該把C++當作一門(mén)新語(yǔ)言來(lái)學(xué)習(C++之

父Bjarne Stroustrup語(yǔ))。

寫(xiě)程序首先希望是程序能正確執行,其次是效率能夠被接受,再次就是易于維護。C++是

一個(gè)難學(xué)易用的語(yǔ)言。C++提供了太多可選擇的東西,而且使用使用C++來(lái)寫(xiě)程序可以

有四種思考模式:基于過(guò)程、基于對象、面向對象和泛型。我們使用一種語(yǔ)言來(lái)寫(xiě)程序,

并不意味著(zhù)就是使用語(yǔ)言本身,換句話(huà)說(shuō),我們更多的時(shí)候是使用程序庫在寫(xiě)程序。比如

MFC、STL、ATL、VCL等等。其中要使用C++來(lái)寫(xiě)出結構優(yōu)美、性能卓越、代碼簡(jiǎn)潔、易于

維護的代碼,首推C++標準程序庫。STL對效率做了嚴格的要求,而且使用STL寫(xiě)出來(lái)的程

序簡(jiǎn)潔美觀(guān)(前段時(shí)間我特意貼了一個(gè)要求對若干整數進(jìn)行排序的帖子,其實(shí)目的就是用來(lái)

展示STL的簡(jiǎn)潔優(yōu)雅)。一旦習慣使用泛型思維來(lái)考慮問(wèn)題,我們能夠充分體會(huì )到模板帶來(lái)的美!

對于數值計算來(lái)說(shuō),C++標準程序庫可以充分滿(mǎn)足現代化服務(wù)和商業(yè)計算對數據、信息的即

時(shí)回應的要求。

我覺(jué)得學(xué)好一門(mén)語(yǔ)言最重要的就是實(shí)踐。也就是多“寫(xiě)”!“工程經(jīng)驗之積累”對已具有

一段開(kāi)發(fā)時(shí)間的程序員而言,非常重要!只有在不斷的積累中,我們才能漸漸體會(huì )到C++

語(yǔ)言中的一些背后的東西。對于這點(diǎn),沒(méi)有大量程序代碼寫(xiě)作經(jīng)驗的菜鳥(niǎo),也可以借助《

Effective C++》先攢一些經(jīng)驗值?!禘ffective C++》是一本好書(shū)!。Meyers的書(shū)絕對值

得一讀,Meyers可以說(shuō)當今C++社群中數一數二的技術(shù)專(zhuān)家。

推薦網(wǎng)站:

www.royaloo.com

以下文字應該是去年所涂鴉而成,主要是關(guān)于動(dòng)態(tài)內存分配的,在這里將其重新看了看

,覺(jué)得還是寫(xiě)得太淺薄了。因為內存是程序運行的“運動(dòng)場(chǎng)”,對場(chǎng)地的了解程度會(huì )直接

影響到我們程序運行的流暢度和穩定性。

C++提供了操作符new來(lái)在堆上分配內存,操作符delete來(lái)釋放內存。有些情況下,我

們需要對內存的分配和釋放進(jìn)行更好的控制。許多程序創(chuàng )建和釋放一些重要類(lèi)的大量的對

象,如tree nodes,linked lists links,points,lines,messages,etc.使用通用的內存分

配器如new和delete來(lái)進(jìn)行這些對象的分配和釋放有時(shí)將支配程序的運行時(shí)間和內存需求。

兩方面的因素:通用內存分配操作的運行和空間的耗費以及不同對象大小引起的內存碎片

。類(lèi)使用定制的內存分配器將加快模擬器、編譯器和類(lèi)似程序的執行速度。

例外一種需要更好的內存控制的情況是:需要在有限資源的情況下長(cháng)時(shí)間不間斷運行

的程序。實(shí)時(shí)系統經(jīng)常需要用最少的耗費來(lái)獲取有保證的可預期的內存。這也就導致了更

好的內存控制的需要。一般來(lái)說(shuō),這些程序都避免使用動(dòng)態(tài)的內存分配,而使用特殊目的

的內存分配器來(lái)管理有限資源。

此外,還有一些情況下由于硬件或系統的要求,需要將對象放在指定的內存位置。這也

需要進(jìn)行定制的內存管理(通過(guò)重載new來(lái)加以實(shí)現)。

在C++ Release 2.0中,為了滿(mǎn)足以上需求,內存管理機制做了相應的修改。主要是引

進(jìn)了operator new [] 和 operator delete []。

new操作符的作用范圍(Scope for operator new Functions)

操作符(Operator) 范圍(Scope)

::operator new Global

class-name::operator new Class

operator new的第一個(gè)參數必須是類(lèi)型size_t(在STDDEF.H中定義的類(lèi)型),返回類(lèi)型

為void *。

當分配內建(built-in)類(lèi)型的對象、未包含用戶(hù)自定義的new操作符函數的類(lèi)對象、任何

類(lèi)型的數組時(shí),使用全局new操作符函數。當在類(lèi)中自定義new操作符時(shí),分配該類(lèi)對象的

內存時(shí),調用該類(lèi)的new操作符。如下:

#include

#include

class Blanks

{

public:

Blanks(){}

void *operator new( size_t stAllocateBlock, char chInit );

};

void *Blanks::operator new( size_t stAllocateBlock, char chInit )

{

void *pvTemp = malloc( stAllocateBlock );

if( pvTemp != 0 )

memset( pvTemp, chInit, stAllocateBlock );

return pvTemp;

}

int main()

{

Blanks *a5 = new( 0xa5 ) Blanks;//創(chuàng )建對象Blanks,并且初試化為0xa5

return a5 != 0;

}

new操作符可以重載,而delete卻不行。因為等到需要釋放的時(shí)候,我們所能得到的就

是一個(gè)指針。而且該指針可能不是原先的對象類(lèi)型指針(有可能進(jìn)行了類(lèi)型轉換)。實(shí)際

上,當使用new獲得一個(gè)指向一片內存的指針時(shí),在該片內存前有一個(gè)指示器(indicator)

,記錄實(shí)際分配的內存數量。當調用delete時(shí),可以獲知需要釋放的內存大小。

數組的釋放(Deallocating Arrays):

void f( )

{

X* p1 = new X[10];

//...

delete [] X;

}

為什么不使用delete [10] X;來(lái)釋放內存?Bjarne Stroustrup稱(chēng)這種做法容易導致錯

誤,而將記錄元素個(gè)數的任務(wù)放在delete的實(shí)現中了。

至于為什么C++中未內建垃圾收集器(Garbage Collection)的原因,看《C++語(yǔ)言的設

計和演化》(En) Bjarne Stroustrup 機械工業(yè)出版社(俗稱(chēng):D&E)可以得到答案。

此外,C++標準庫中提供了一種智能型指針auto_ptr,這種指針可以幫助我們防止“被

異常拋出時(shí)發(fā)生資源泄漏”。但是缺點(diǎn)是該智能型指針不能指向數組,因為其內部釋放內

存是通過(guò)delete而非delete [] 來(lái)進(jìn)行的。所以,只能使用其來(lái)指向一個(gè)單個(gè)對象。

模板部分是C++中比較難的部分,也是C++的魅力所在。以下文字是我以前看過(guò)的,具

體出處不清楚了。今天稍微整理了一下,作為模板介紹的一個(gè)單元。

為什么要使用模板

對于除類(lèi)型之外,其余都相同的函數(譬如quicksort),我們一般有3種解決辦法。

1、針對每個(gè)不同的類(lèi)型重復地編寫(xiě)函數實(shí)體(C語(yǔ)言的做法):

int* quicksort(int a[]) {... }

double* quicksort(double a[]) {... }

2、使用Object(Java的做法)或者void*

缺點(diǎn)有兩個(gè)

效率問(wèn)題方面也有問(wèn)題

類(lèi)型檢查問(wèn)題

3、使用宏預處理機制

缺點(diǎn):只是愚蠢的文本替換,而且也不會(huì )考慮作用域和類(lèi)型安全。

然而,應用模板卻可以避免這些缺點(diǎn),我們可以編寫(xiě):

template

T* quicksort(T a[]) {... }

優(yōu)點(diǎn):

代碼簡(jiǎn)潔優(yōu)雅,所有參數類(lèi)型都以T來(lái)代替,真正實(shí)現了類(lèi)型無(wú)關(guān)性。

更好的類(lèi)型安全性,所有的類(lèi)型檢查都是在編譯期進(jìn)行,而且避免使

用指針。

不存在繼承,效率高。(1)沒(méi)有虛函數;(2)所有的一切工作都是

在編譯期完成,大大提高運行效率。

目的:告訴編譯器如何做出最佳的選擇,而且這種選擇

全部是在編譯期完成的。

模板的機制:特化 和 實(shí)參演繹

1、特化

基本模板:

template

class A { // (1)

void f(T1 a, T2 b);

}

局部特化(偏特化):

template class A { // (2)

void f(int a, T2 b);

}

或者

template> class A { // (3)

void f(T a, T b);

}

全局特化(顯式特化):

template<>

class A {

void f(int a, int b); // (4)

}

使用示例:

A* p1; //將使用(4) ——全局特化

A* p2; //將使用(3) ——局部特化

A* p3; //將使用(2) ——局部特化

A* p4; //將由(1) ——基本模板——生成

//A

優(yōu)點(diǎn):

由:全局特化->局部特化->基本模板,這種特化順序的選擇與匹配(重載解析規則)是由編譯器自動(dòng)進(jìn)行的,無(wú)需人工參與。

可以根據不同的情況(諸如類(lèi)型不同,條件不同),給出不同的實(shí)現,從而獲得更加靈活的針對性。

可以針對任何變化,改善了程序的擴展性。

2 實(shí)參演繹

T const& f(T const& a, T const& b)

{

return a + b; //1處

}

int g = f(1,2);

實(shí)際上f(1,2)要匹配的函數是int const& f(int const&,int const&);

而這個(gè)函數又是怎么來(lái)的呢?

優(yōu)點(diǎn):

再也無(wú)需提供一對尖括號和里面的實(shí)參,諸如f(1,2),有了

實(shí)參演繹,我們就可以寫(xiě)成f(1,2)。

模板的應用

1、標準庫(STL)——到處都是模板代碼

標準庫=算法+容器+迭代器

如list /

2、類(lèi)型無(wú)關(guān)性(T)

3、trait和policy

(1)trait: 主要用到了許多typedef和特化,指定的是一種特性。

// traits/accumtraits3.hpp

template

lass AccumulationTraits;

c template<>

class AccumulationTraits {

public:

typedef int AccT;

static AccT const zero = 0;

};

template<>

class AccumulationTraits {

public:

typedef int AccT;

static AccT const zero = 0;

};

template<>

class AccumulationTraits {

public:

typedef long AccT;

static AccT const zero = 0;

};

(2)policy:通常表現為某個(gè)函數,指定的是一種行為

class SumPolicy {

public:

template

static void accumulate (T1& total, T2 const & value) {

total += value;

}

};

(3)trait和policy的用法:

template >

class Accum {

public:

typedef typename Traits::AccT AccT;

static AccT accum (T const* beg, T const* end) {

AccT total = Traits::zero();

while (beg != end) {

Policy::accumulate(total, *beg);

++beg;

}

return total;

}

};

4、Metaprogramming

編譯期計算、遞歸的思想

5、新形式的設計模板

(第三、第四、第五點(diǎn)以后再詳細介紹)

《C++ Templates中文版》的具體介紹

第1部分介紹了模板的基本概念,以教程的風(fēng)格來(lái)介紹這些基本概念。

第2部分闡述了模板的語(yǔ)言細節,可以作為一本基于模板的構造的參考手冊。

第3部分介紹了C++模板所支持的基本設計技術(shù),范圍覆蓋從微小的概念一直延伸到復雜的用法;一些技術(shù)在別的書(shū)籍都沒(méi)有出現過(guò)。

第4部分基于前兩部分,深入討論了各種使用模板的普通應用程序。

問(wèn)題: vc要學(xué)多久呀?

回復: 水上明珠

學(xué)一個(gè)月,可以用VC寫(xiě)一些小程序自己玩玩

學(xué)兩個(gè)月,可以用VC寫(xiě)像樣點(diǎn)的東西在周?chē)嗣媲办澎?/p>

學(xué)三個(gè)月,可以用VC給老板開(kāi)始干活了

學(xué)六個(gè)月,開(kāi)始重頭去學(xué)C++

學(xué)一年后,決定要不要繼續,if(繼續) 學(xué)習MFC、ATL、STL、C#、BCB、Network、Databa

se、Algorithm... else 開(kāi)始就是個(gè)錯誤

學(xué)三年后,學(xué)會(huì )怎么來(lái)用編程語(yǔ)言來(lái)解決問(wèn)題,VC、BCB等都只是解決問(wèn)題的工具。這時(shí)候

你如果還在學(xué)C++,你可以從事軟件開(kāi)發(fā)這個(gè)很有“前途”的職業(yè)了

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C++ 模板基礎談 - C/C++ / C++ 語(yǔ)言
C++中的類(lèi)模板詳細講述
(C 模板類(lèi))
類(lèi)模板(原創(chuàng )) - c++探索 - C++博客
全特化/偏特化
<轉載>獨一無(wú)二的C++模板
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久