精華區beta CompBook 關於我們 聯絡資訊
C++ Primer 答客問 (1) Don wrote (1999/10/02): > 侯老師!! > > 我是一個 C++ 初學者,聽說 C++ Primer 這本書不錯 > 於是就買了您的大作,但是: > > 一、這本書一開始我就看不懂了!! > 尤其第二章,那是必需先有一些基本知識的人才看得懂的! 第二章章名「縱覽 C++」,是讓你對 C++ 的特性做一個總覽。 本書前言 p.xv 第二段(我還特別 highlight 起來)說: -------------------------------------------------------------↓ 第二章的配速有點快,部份讀者可能會覺得無法負荷。如果是這樣, 我建議你不妨跳著讀,稍後再回頭仔細看。 -------------------------------------------------------------↑ 本書第一篇 p.2 又說: -------------------------------------------------------------↓ 「在第一篇中,我對整個 C++ 語言做了快速的瀏覽。我的目的 是提供語言特性的導入,如此一來我們就可以在完全面對這些 性質之前,比較無拘無束地取用其中一些觀念。例如,在第 13 章 之前我們並不會細看 classes,但如果等到那個時候才談及 classes,我們會有很多難以表現的或不恰當的程式實例。 對整個語言先做一次淺嚐之旅的第二個理由是基於美學的考量。 除非你先讓自己曝露於貝多芬奏鳴曲所呈現的美感與複雜度之下, 否則明顯無關聯的細節如升半音、降半音、八度音階、和弦…等等 必定令人呵欠連連。但是在精通那些細節之前,我們又沒有辦法 「做音樂」。程式設計也一樣,踩踏著迷宮般的「運算子優先權」 或「標準算術轉換規則」,對於精通 C++ 程式設計而言,是一種 必要(但也一定令人生悶)的基礎。 -------------------------------------------------------------↑ 此外本書第一篇 p.3 最後一段說: -------------------------------------------------------------↓ 「部份讀者可能會認為,第2章過於粗糙,許多呈現出來的素材並 沒有完整的介紹。完整的介紹其實出現在後繼各章中。如果你發 現自己開始有點被淹沒或難以忍受的感覺,我建議你略讀本章就 好,或甚至跳過。直到你對那些素材更加熟悉,再回頭重讀這一 部份。第3章起,我要展開傳統的敘事體步調;對第2章適應不 良的讀者,我建議在這裡整軍經武,重新出發。」 -------------------------------------------------------------↑ > 二、我所使用的是 VC++5.0 > 裡面的程式碼,幾乎是都不能 compile 過的 > 像是 string abc 之類的宣告不能用 > complex 的宣告也不能用!! > > 我都搞不清楚是誰的錯,mcrosoft 還是 C++ sandard !! > 但是重點是在,我不能使用來寫能用的程式啊! > gc++是否有相容性比較高呢?? 請看這個沒有錯誤的程式 : // BCB : bcc32 test.cpp // VC : cl -GX test.cpp #include <string> #include <iostream> #include <complex> using namespace std; void main() { string abc = "this is a test"; cout << abc << endl; // a pure imaginary number : o + 7i complex<double> purei(0, 7); cout << purei << endl; } 我猜你沒有加上 using namespace std; 這一句。 本書導讀 p.19 的 <範例程式注意事項>,我列了三項, 其中第二項說: -------------------------------------------------------------↓ 您可能需要為許多程式加上一行 using directive std;(其意義 請參考 8.6.4 節),可加在所有 #include 指令之後。 -------------------------------------------------------------↑ 而 8.6.4 節的最後一段指出: -------------------------------------------------------------↓ 本書之中,為了保持程式碼的精簡,同時也因為許多實例是在 未支援 namespaces 的編譯器上編譯,所以我並未在程式碼中 明白顯示必要的 using declarations。我假設程式碼中應該 都有針對 namespace std 成員所需要的 using declarations。 譯註:讀者如果想要編譯本書所附之範例程式碼,請特別注意這一點。 -------------------------------------------------------------↑ 你詢問各編譯器對於 C++ Standard 的相容性。我想除了 template 以及 STL 兩部份外,各家編譯器對 C++ Standard 的支援程度都是差不多的。至於這兩部份,我先前在 CompBook 版上 的文章曾經提醒過大家。 對《C++ Primer 中文版》(侯捷譯/碁峰/1999)的任何問題, 歡迎來信(或版上公開)討論。如果您是初學者,不具備跳躍閱讀 的能力,我希望您按照書籍的閱讀動線,仔細閱讀,然後才提出問題。 謝謝。 --- the end -- ※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ Mail: jjhou@ccca.nctu.edu.tw