你也可以拿到 postscript 和 adobe acrobat 的版本:
ftp://research.att.***/dist/stdc++/wp
也能拿到 html 和 ascii 的版本:
ftp://ftp.cygnus.***/pub/g++
也能拿到書面版本:
x3 secretariat
1250 eye street nw
suite 200
washington, dc 20005
202-626-5738
你也可以用 email:
[email protected] (lynn barra)
註明要索取最新的 "draft proposed american national standard for information
systems -- programming language c++",檔案編號 cd14882。它通常是用2日期的
fedex(美國境內)來遞送的,所以很快就能收到。
****************************************
q8:c++ 對 ansi-c 回溯相容嗎?
幾乎是。
c++ 盡可能地和 c 相容,但不能更相容了。事實上,主要的不同在於 c++ 要求函式
原型:"f()" 宣告的是無引數的函式(在 c 裡,"f()" 和 "f(...)" 是一樣的)。
還有些細微的差別,像在 c++ 裡 sizeof('x') 等同於 sizeof(char),但在 c 裡面
卻是等同於 sizeof(int)。 而且,c++ 直接就把結構的卷標(tag)當成是型別的名
字,但 c 就需要加個 "struct" 字("typedef struct fred fred" 這種技巧仍然能
用,但在 c++ 中是累贅的)。
****************************************
q9:多久才能學會 c++?
像 paradigm shift 公司,成功地教授過標準的工業界「短期課程」,將大學一學期
的課壓縮到一周 40 小時。然而真正的精通得由實際經驗而來:沒有東西能取代時間
。需動手做的指定專題是必要的,因為它們能將你的觀念「凝固成形」。
大約要 6-12 個月才能流利使用 c++/oop,如果身邊有高手的話,費時會短些;反之
若沒有個「好的」通用型 c++物件鏈結庫,則會耗時更久。想成為顧問級的高手,則
約需 3 年。
有些人卻根本辦不到。除非你是可造之材,且有強烈的個人驅動力,否則你也做不到
。「孺子可教」最起碼的要求是:你必須能「覺今是而昨非」。「驅動力」最起碼的
要求是:你願意多投入時間精力(改變思考的方式〔典範轉移 paradigm shift〕要
遠比學些新的東西來得困難)。
*************************
■□ 第4節:c++ 的基礎
*************************
q10:什麼是類別(class)?
物件導向系統的基石。
類別是用來定義資料型態(data type)的,就像 c 的 struct 一樣。
以資訊科學術語來說,乙個型態包含了一組狀態(state),以及在狀態之間轉移的
動作行為(operation)。因此 "int" 是個「型態」,因為它有一組狀態,還有諸如
「加兩個整數」、「整數相乘」等等的運作行為。同樣的,「類別」提供一組(通常
是公共的)運算,及一組(通常是非公共的)資料域位,以代表該型態的案例所擁有
的抽象值。以 c 的角度來看,類別就是其成員(members)皆預設為 "private" 的
struct。
把 "int" 想成是個類別,它擁有 "operator++" 等等的運作行為(method)。
****************************************
q11:什麼是物件(object)?
一塊賦有某種語意的儲存空間。
在宣告 "int i;" 之後,我們稱「i 是個 int 型態的物件」。在 c++/oop 裡,「物
件」通常意指「類別的案例(an instance of a class)」,因此類別定義了數個物
件(案例)的行為。
****************************************
q12:什麼是參考(reference)?
乙個物件的「別名」(alias,另乙個名稱)。
參考通常用於傳址呼叫(pass-by-reference):
void swap(int& i, int& j)
main()
在這裡 "i" 和 "j" 分別是是 main 函式中 "x" 與 "y" 的別名,換句話說,"i" 就
是 "x"--不是個指向 "x" 的指標,也不是 "x" 該值的複製品,而它的的確確就是
"x" 本身。你對 "i" 做的任何動作,都會反映到 "x" 上;反之亦然。
從最底層來看,參考最常用指標來實作,它的效果有點像 c 裡頭的「傳指標呼叫」
(pass-by-pointer),但 "&" 取址運運算元由呼叫者換到被呼叫者之處了,你也要刪
去所有的 "*" 運運算元。
****************************************
q13:如果設定某值給參考會怎麼樣?
會更動到被參考者(referrent,該「參考」所參考到的物件)。
記住:「參考」就是「被參考者」,因此動了參考就會改動到被參考者(「參考」是
「被參考者」的左值 "lvalue"〔出現在設定陳述的左邊〕)。
更進一步,我們也允許參考被傳回。這樣子函式呼叫就可放在設定陳述的左邊,這對
運運算元多載的場合很有用。
****************************************
q14:怎樣才能將參考改設成別的物件?
沒有辦法。
和指標不同,一旦參考被繫結到某個物件,它就不能再被改設到其它物件去。「參考
」本身不是乙個物件(它自己沒有位址;「取參考的位址」只會得到被參考者的位址
;切記:「參考」就是「被參考者」)。
將「參考」與「被參考者」分離開來是不可能的。
****************************************
q15:何時該用參考,何時又該用指標?
可以時,用參考;必要時,就用指標。
當你不需要「重設」它時(見前乙個問題),參考會比指標好。這通常意味著:在物
件類別的公共介面中參考最有用。參考大多用於物件的表層,而指標則多用於裡層。
但有乙個例外:當函式引數或傳回值需要乙個「臨界」(sentinel)的參考值時,最
好是用指標來做,以 null 指標做為乙個特別值(「參考」應該是個實質物件的「別
名」,而不是個解參用的〔dereferenced〕null 指標)。
注意:老資格的 c 程式設計師不喜歡參考,因為在父程式的地方,「參考」的語意並不
是那麼明顯。然而有了些 c++經驗後,會發現這正是一種「資訊隱藏」的作法,是利
而非弊。好比說,程式設計師應該以切近該問題的方式來寫程式,而非以機器的語言來解
題。
常見問題解答
怎麼判斷乙個exe可執行檔案是用什麼語言開發的?答 請試試peid偵殼工具吧!批處理命令中注釋符號是什麼?答 1 注釋內容 第乙個冒號後也可以跟任何乙個非字母數字的字元 2 rem 注釋內容 不能出現重定向符號和管道符號 3 echo 注釋內容 不能出現重定向符號和管道符號 nul 4 if not...
C語言常見問題
在c語言中,有乙個 流 的概念 流可以分為兩種型別 文字流 檔案 和二進位製流 檔案 文字流是解釋性的,最長可達255個字元 二進位製流是非解釋性的,一次處理乙個字元。在用c語言程式設計的時候,我們都是用 include指令包含型別為 h 的檔案,那麼可以用該指令包含型別不為 h 的檔案嗎?答案是 ...
C語言常見問題
1 嵌入式與微控制器的區別 從軟體上,行業裡經常把晶元中不帶mmu memory management unit記憶體管理單元 從而不支援虛擬位址,只能裸奔或執行rtos 實時作業系統,例如ucos 華為liteos rt thread freertos 的system,叫做微控制器 例如stm32...