Chuck Allison 是鹽湖城圣 Latter Day 教堂總部下耶穌教堂家族歷史研究處的軟件體系設(shè)計師。他擁有數(shù)學(xué)學(xué)士和數(shù)學(xué)碩士學(xué)位。他從1975年起開始編程,從1984年起他開始從事c語言的教學(xué)和開發(fā)。他目前的興趣是面向?qū)ο蟮募夹g(shù)及其教育。他是X3J16,ANSI C ++標(biāo)準(zhǔn)化委員會的一員。發(fā)送e-mail 到 allison@decus.org,或者撥打電話到 (801)240-4510 均可以與他取得聯(lián)系。
上個月的專欄里介紹了一個日期間隔函數(shù),它可以算出任意兩個日期之間的年,月和日。這個月的專欄則提出了一個用C++解決該問題的方法。這種方法的本質(zhì)是創(chuàng)建一種新的數(shù)據(jù)類型,這種數(shù)據(jù)類型的行為就像內(nèi)建的數(shù)據(jù)類型一樣。換句話說,你要從基于函數(shù)的方法 (“我想要怎么樣做事”)轉(zhuǎn)換到基于對象的方法(“我的問題的原理和對象是什么”)。使用C++非常需要另外一種思考問題的方法。為了實現(xiàn)這個轉(zhuǎn)換,首先要先知道為什么會有C++存在。
關(guān)于兩種語言的故事
C++源自80年代早期 AT&T 的 Bjarne Stroustrup 提出的“帶類的 C”。他那時正在尋求在 Simula-67 中更快的進行仿真的方法。"class"是 Simula 中用來指用戶自己定義的類型的術(shù)語,能夠定義出非常接近現(xiàn)實的對象,這是進行良好的仿真的關(guān)鍵。有沒有一種更好的方法,能夠比在c語言--最快的過程化語言中加入"class"的概念更快的進行仿真呢?
選擇C為類提供了一個不僅有效而且靈活的工具。雖然一些其他的語言在C++之前很久就支持通過類來對數(shù)據(jù)進行抽象,但是C++用的最廣泛。幾乎每一種主要的具有C語言編譯器的平臺同樣能夠支持C++。最后我還聽說,C++的用戶群每七個月就會翻一番。
對C++的最初了解是令人吃驚的。如果你是從C語言轉(zhuǎn)過來的話,你需要把下面這些詞語加進你的詞匯表:抽象類,存取控制,基類,catch子句,類,類的作用域,構(gòu)造函數(shù),拷貝構(gòu)造函數(shù),缺省參數(shù),缺省構(gòu)造函數(shù),delete運算符,派生類,析構(gòu)函數(shù),異常,異常處理,友元,繼承,內(nèi)聯(lián)函數(shù),操作符,成員函數(shù),多重繼承,嵌套類,new處理函數(shù),new操作符,重載,成員指針,多態(tài),私有,保護,公有,純虛函數(shù),引用,靜態(tài)成員,流,模板,this指針,try塊,類型安全連接,虛基類,虛函數(shù)。
一個好消息說C++是一種強大的、有效的、面向?qū)ο蟮?、能夠處理各種復(fù)雜應(yīng)用的語言。壞消息則是這種語言本身就比較復(fù)雜,比C語言難掌握。C語言是造成這一問題的一部分。C++是一個混血兒,既有面向?qū)ο蟮奶卣?,又有通用系統(tǒng)編程語言的特征。我們不可能純粹介紹C++這一系列豐富的新特征而不一點也不考慮C語言本身。對C的兼容性是C++設(shè)計時的一個主要目標(biāo)。正如Bjarne在ANSI C++委員會上所陳述的那樣,C++是一種"工程上的折衷",它"要和C語言盡可能的接近,但又不能太接近"。到底要多接近現(xiàn)在還在研究中。
上個月的專欄里介紹了一個日期間隔函數(shù),它可以算出任意兩個日期之間的年,月和日。這個月的專欄則提出了一個用C++解決該問題的方法。這種方法的本質(zhì)是創(chuàng)建一種新的數(shù)據(jù)類型,這種數(shù)據(jù)類型的行為就像內(nèi)建的數(shù)據(jù)類型一樣。換句話說,你要從基于函數(shù)的方法 (“我想要怎么樣做事”)轉(zhuǎn)換到基于對象的方法(“我的問題的原理和對象是什么”)。使用C++非常需要另外一種思考問題的方法。為了實現(xiàn)這個轉(zhuǎn)換,首先要先知道為什么會有C++存在。
關(guān)于兩種語言的故事
C++源自80年代早期 AT&T 的 Bjarne Stroustrup 提出的“帶類的 C”。他那時正在尋求在 Simula-67 中更快的進行仿真的方法。"class"是 Simula 中用來指用戶自己定義的類型的術(shù)語,能夠定義出非常接近現(xiàn)實的對象,這是進行良好的仿真的關(guān)鍵。有沒有一種更好的方法,能夠比在c語言--最快的過程化語言中加入"class"的概念更快的進行仿真呢?
選擇C為類提供了一個不僅有效而且靈活的工具。雖然一些其他的語言在C++之前很久就支持通過類來對數(shù)據(jù)進行抽象,但是C++用的最廣泛。幾乎每一種主要的具有C語言編譯器的平臺同樣能夠支持C++。最后我還聽說,C++的用戶群每七個月就會翻一番。
對C++的最初了解是令人吃驚的。如果你是從C語言轉(zhuǎn)過來的話,你需要把下面這些詞語加進你的詞匯表:抽象類,存取控制,基類,catch子句,類,類的作用域,構(gòu)造函數(shù),拷貝構(gòu)造函數(shù),缺省參數(shù),缺省構(gòu)造函數(shù),delete運算符,派生類,析構(gòu)函數(shù),異常,異常處理,友元,繼承,內(nèi)聯(lián)函數(shù),操作符,成員函數(shù),多重繼承,嵌套類,new處理函數(shù),new操作符,重載,成員指針,多態(tài),私有,保護,公有,純虛函數(shù),引用,靜態(tài)成員,流,模板,this指針,try塊,類型安全連接,虛基類,虛函數(shù)。
一個好消息說C++是一種強大的、有效的、面向?qū)ο蟮?、能夠處理各種復(fù)雜應(yīng)用的語言。壞消息則是這種語言本身就比較復(fù)雜,比C語言難掌握。C語言是造成這一問題的一部分。C++是一個混血兒,既有面向?qū)ο蟮奶卣?,又有通用系統(tǒng)編程語言的特征。我們不可能純粹介紹C++這一系列豐富的新特征而不一點也不考慮C語言本身。對C的兼容性是C++設(shè)計時的一個主要目標(biāo)。正如Bjarne在ANSI C++委員會上所陳述的那樣,C++是一種"工程上的折衷",它"要和C語言盡可能的接近,但又不能太接近"。到底要多接近現(xiàn)在還在研究中。