「
C++程 ほど 序 じょ 设计语言 」
重定 しげさだ 向 むかい 至 いたる 此。关于
相 しょう 关译
名 めい 书籍,请见「
C++编程语言 (书) 」。
C++ 是 ぜ 一种被广泛使用的计算机程序设计语言。它是一 いち 种通用 つうよう 程 ほど 式 しき 設計 せっけい 語 ご 言 げん ,支援 しえん 多重 たじゅう 编程范式 ,例 れい 如過程 かてい 化 か 程 ほど 序 じょ 設計 せっけい 、面 めん 向 こう 对象程 ほど 序 じょ 設計 せっけい 、泛型程 ほど 式 しき 設計 せっけい 和 わ 函数 かんすう 式 しき 程 ほど 序 じょ 設計 せっけい 等 ひとし 。
C++ 编程范型 多 た 范型 :面 めん 向 こう 对象编程 ,過程 かてい 化 か 編 へん 程 ほど ,泛型编程 設計 せっけい 者 しゃ 比 ひ 雅 まさ 尼 に ·斯特劳斯特 とく 鲁普发行时间 1983年 ねん ,41年 ねん 前 まえ (1983 ) 当 とう 前 ぜん 版本 はんぽん C++20 (2020年 ねん 12月;穩定版本 はんぽん ) [ 1]
型 かた 態 たい 系統 けいとう 静 せい 态类型 がた ,强 つよ 类型 ,不 ふ 安全 あんぜん 實 じつ 作 さく 語 ご 言 げん C++、C 等 とう 文 ぶん 件 けん 扩展名 めい .C .cc .cpp .cxx .c++(源 みなもと 文 ぶん 件 けん ) .h .hh .hpp .hxx .h++(头文件 けん ) 網 あみ 站isocpp .org 主要 しゅよう 實 み 作 さく 產品 さんぴん Embarcadero C++Builder , GCC , Intel C++ Compiler , Microsoft Visual C++ , LLVM Clang 衍生副 ふく 語 かたり 言 げん ISO/IEC 14882:1998, ISO/IEC 14882:2003, ISO/IEC 14882:2011, ISO/IEC 14882:2014, ISO/IEC 14882:2017 啟發 けいはつ 語 ご 言 げん Ada 83 , ALGOL 68 , C , CLU , ML , Simula 影響 えいきょう 語 ご 言 げん Ada 95 , Aikido , C99 , C# , Clojure , D , Dao , Falcon , Java , Lua , Perl , PHP
比 ひ 雅 まさ 尼 に ·斯特勞 ろう 斯特魯普博士 はかせ 在 ざい 贝尔实验室 しつ 工作 こうさく 期 き 间在20世紀 せいき 80年代 ねんだい 發明 はつめい 並 なみ 實現 じつげん 了 りょう C++。起 おこり 初 はつ ,這種語 ご 言 げん 被 ひ 稱 しょう 作 さく “C with Classes ”(“包含 ほうがん ‘類 るい ’的 てき C語 ご 言 げん ”),作為 さくい C語 ご 言 げん 的 てき 增強 ぞうきょう 版 ばん 出現 しゅつげん 。随 ずい 后 きさき ,C++不斷 ふだん 增加 ぞうか 新 しん 特性 とくせい 。虚 きょ 函数 かんすう 、运算符 ふ 重 じゅう 载 、多 た 繼承 けいしょう 、标准模 も 板 ばん 库 、异常处理 、运行时类型 がた 信 しん 息 いき 、命名 めいめい 空間 くうかん 等 とう 概念 がいねん 逐漸納入 のうにゅう 標準 ひょうじゅん 草案 そうあん 。1998年 ねん ,國際 こくさい 標準 ひょうじゅん 組織 そしき 頒布 はんぷ 了 りょう C++程 ほど 序 じょ 設計 せっけい 語 ご 言 げん 的 てき 第 だい 一 いち 個 こ 國際 こくさい 標準 ひょうじゅん ISO/IEC 14882:1998,目前 もくぜん 最新 さいしん 标准为ISO/IEC 14882:2020。ISO/IEC 14882通称 つうしょう ISO C++。ISO C++包含 ほうがん 了 りょう 主要 しゅよう 包含 ほうがん 了 りょう 核心 かくしん 语言和 わ 标准库的规则。尽 つき 管 かん 从核心 こころ 语言到 いた 标准库都有 ゆう 显著不同 ふどう ,ISO C++直接 ちょくせつ 正式 せいしき (normative)引用 いんよう 了 りょう ISO/IEC 9899(通称 つうしょう ISO C),且ISO C++标准库的一 いち 部分 ぶぶん 和 わ ISO C的 てき 标准库的API 完全 かんぜん 相 しょう 同 どう ,另有很小一 いち 部分 ぶぶん 和 わ C标准库略有 ゆう 差 さ 异(例 れい 如,strcat
等 とう 函数 かんすう 提供 ていきょう 对const
类型的 てき 重 じゅう 载)。这使得 とく C和 わ C++的 てき 标准库实现常常 つね 被 ひ 一 いち 并提供 ていきょう ,在 ざい 核心 かくしん 语言规则很大一部分兼容的情况下,进一步确保用户通常较容易把符合ISO C的 てき 源 みなもと 程 ほど 序 じょ 不 ふ 经修改 あらため 或 ある 经极少 しょう 修 おさむ 改 あらため 直接 ちょくせつ 作 さく 为C++源 みなもと 程 ほど 序 じょ 使用 しよう ,也是C++语言继C语言之 の 后 きさき 流行 りゅうこう 的 てき 一 いち 个重要 よう 原因 げんいん 。
作 さく 为广泛被使用 しよう 的 てき 工 こう 业语言 ごと ,C++存在 そんざい 多 た 个流行 りゅうこう 的 てき 成熟 せいじゅく 实现:GCC 、基 もと 于LLVM 的 てき Clang 以及Visual C++ 等 ひとし 。这些实现同 どう 时也是 ぜ 成熟 せいじゅく 的 てき C语言实现,但 ただし 对C语言的 てき 支持 しじ 程度 ていど 不一 ふいつ (例 れい 如,VC++对ANSI C89之 これ 后 きさき 的 てき 标准支持 しじ 较不完 かん 善 ぜん )。大 だい 多数 たすう 流行 りゅうこう 的 てき 实现包含 ほうがん 了 りょう 编译器 き 和 わ C++部分 ぶぶん 标准库的实现。编译器 き 直接 ちょくせつ 提供 ていきょう 核心 かくしん 语言规则的 てき 实现,而库提供 ていきょう ISO C++标准库的实现。这些实现中 ちゅう ,库可能 かのう 同 どう 时包含 ほうがん 和 わ ISO C标准库的共用 きょうよう 实现(如VC++的 てき msvcrt);而另一 いち 些实现的ISO C标准库则是 ぜ 单独于编译器项目之 の 外 そと 提供 ていきょう 的 てき ,如glibc 和 わ musl 。C++标准库的实现也可能 かのう 支持 しじ 多 た 种编译器,如GCC的 てき libstdc++库支持 しじ GCC的 てき g++和 かず LLVM Clang的 てき clang++。这些不同 ふどう 的 てき 丰富组合使 し 市 し 面 めん 上 じょう 的 てき C++环境具有 ぐゆう 许多细节上 じょう 的 てき 实现差 さ 异,因 いん 而遵循ISO C++这样的 てき 权威标准对维持 じ 可 か 移植 いしょく 性 せい 显得更 さら 加 か 重要 じゅうよう 。现今讨论的 てき C++语言,除 じょ 非 ひ 另行指 ゆび 明 あきら ,通常 つうじょう 均 ひとし 指 ゆび ISO C++规则定 てい 义的C++语言(虽然因 いん 为实现的差 さ 异,可能 かのう 不 ふ 一定 いってい 是 ぜ 最新 さいしん 的 てき 正式 せいしき 版本 はんぽん )。
值得注意 ちゅうい ,和 わ 流行 りゅうこう 的 てき 误解不同 ふどう ,ISO C和 わ ISO C++都 と 从未明 みめい 确要求 ようきゅう 源 げん 程 ほど 序 じょ 被 ひ 编译(compile) ,而仅要求 ようきゅう 翻 こぼし 译(translate) ,因 いん 此C和 わ C++并不是 ぜ 所 しょ 谓的编译型 がた 语言[來 らい 源 みなもと 請求 せいきゅう ] 。技 わざ 术上,实现C和 わ C++程 ほど 序 じょ 的 てき 单位是 ぜ 翻 こぼし 译单元 もと (translation unit)。作 さく 为对比 ひ ,Java 语言规范中 ちゅう 就明确要求 ようきゅう Java程 ほど 序 じょ 被 ひ 编译实现,明 あきら 确存在 そんざい 编译单元(compilation unit)。实际上 じょう C和 わ C++也存在 そんざい REPL 形式 けいしき 的 てき 解 かい 释器 实现,如CINT 和 わ Cling 。但 ただし 因 よし 为传统上C和 わ C++多 た 以编译器实现,习惯上 じょう 仍有一 いち 些混用 こんよう ,甚至至 いたり 今 こん 仍出现在ISO C++某 ぼう 节标准 じゅん 库条款的标题 (页面存 そん 档备份 ,存 そん 于互联网档案 あん 馆 )上 じょう 。
传统上 じょう ,C++语言被 ひ 视为和 わ C语言实现性能 せいのう 相近 すけちか 的 てき 语言,强 つよ 调运行 ぎょう 时的高 だか 效 こう 。根據 こんきょ 《C++編 へん 程 ほど 思想 しそう 》(Thinking in C++ )一 いち 書 しょ ,C++與 あずか C的 てき 代 だい 码执行 ぎょう 效率 こうりつ 往往 おうおう 相差 おうさつ 在 ざい ±5%之 これ 間 あいだ [ 2] 。
比 ひ 雅 まさ 尼 に ·史 し 特 とく 勞 ろう 斯特魯普 ,C++之 これ 父 ちち
C++語 かたり 言 げん 發展 はってん 大概 たいがい 可 か 以分為 ため 三 さん 個 こ 階段 かいだん :第 だい 一 いち 階段 かいだん 從 したがえ 80年代 ねんだい 到 いた 1995年 ねん 。這一階段 かいだん C++語 かたり 言 げん 基本 きほん 上 じょう 是 ぜ 傳統 でんとう 類型 るいけい 上 じょう 的 てき 面 めん 向 こう 对象語 かたり 言 ごと ,並 なみ 且憑藉着接近 せっきん C語 ご 言 げん 的 てき 效率 こうりつ ,在 ざい 工業 こうぎょう 界 かい 使用 しよう 的 てき 開發 かいはつ 語 ご 言 げん 中 ちゅう 佔據了 りょう 相當 そうとう 大 だい 份額;第 だい 二 に 階段 かいだん 從 したがえ 1995年 ねん 到 いた 2000年 ねん ,這一階段 かいだん 由 よし 於標準 ひょうじゅん 模 も 板 いた 庫 こ 和 わ 後來 こうらい 的 てき Boost 等 とう 程 ほど 式 しき 庫 こ 的 てき 出現 しゅつげん ,泛型程 ほど 序 じょ 設計 せっけい 在 ざい C++中 ちゅう 佔據了 りょう 越來 ごえく 越 えつ 多 た 的 てき 比重 ひじゅう 。當然 とうぜん ,同時 どうじ 由 よし 於Java 、C# 等 とう 語 かたり 言 げん 的 てき 出現 しゅつげん 和 わ 硬 かた 體 からだ 價格 かかく 的 てき 大 だい 規模 きぼ 下降 かこう ,C++受到了 りょう 一定 いってい 的 てき 衝擊 しょうげき ;第 だい 三 さん 階段 かいだん 從 したがえ 2000年 ねん 至 いたり 今 いま ,由 ゆかり 於以Loki 、MPL(Boost) 等 とう 程 ほど 式 しき 庫 こ 為 ため 代表 だいひょう 的 てき 產 さん 生 せい 式 しき 編 へん 程 ほど 和 わ 模 かたぎ 板元 はんもと 編 へん 程 ほど 的 てき 出現 しゅつげん ,C++出現 しゅつげん 了 りょう 發展 はってん 歷史 れきし 上 じょう 又 また 一 いち 個 こ 新 しん 的 てき 高峰 こうほう ,這些新 しん 技術 ぎじゅつ 的 てき 出現 しゅつげん 以及和 わ 原 はら 有 ゆう 技術 ぎじゅつ 的 てき 融合 ゆうごう ,使 つかい C++已 やめ 經 けい 成 なり 為 ため 當今 とうぎん 主流 しゅりゅう 程 ほど 序 じょ 設計 せっけい 語 ご 言 げん 中 ちゅう 最 さい 複雜 ふくざつ 的 てき 一員 いちいん 。
比 ひ 雅 まさ 尼 に ·史 し 特 とく 勞 ろう 斯特魯普工作 こうさく 起 おこり 於1979年 ねん 的 てき C with Classes 。這個構思起源 きげん 於斯特 とく 劳斯特 とく 鲁普做博士 はかせ 論文 ろんぶん 時 じ 的 てき 一些程式撰寫經驗。他 た 發現 はつげん Simula 具備 ぐび 很利於大 おだい 型 がた 軟體開發 かいはつ 的 てき 特 とく 點 てん ,但 ただし Simula 的 てき 執行 しっこう 速度 そくど 太 ふとし 慢,無法 むほう 對 たい 現實 げんじつ 需求發揮 はっき 功 こう 效 こう ;BCPL 雖快得 とく 多 た ,但 ただし 它過於低階 かい 的 てき 特性 とくせい ,使 つかい 其不適 てき 於大 おだい 型 がた 軟體的 てき 開發 かいはつ 。當 とう 斯特劳斯特 とく 鲁普開始 かいし 在 ざい 貝 かい 爾 なんじ 實驗 じっけん 室 しつ 工作 こうさく 時 じ ,他 た 有 ゆう 分析 ぶんせき UNIX 核心 かくしん 關 せき 於分散 ぶんさん 式 しき 計算 けいさん 的 てき 問題 もんだい 。回 かい 想起 そうき 他 た 的 てき 博士 はかせ 論文 ろんぶん 經驗 けいけん ,斯特劳斯特 とく 鲁普開始 かいし 為 ため C語 ご 言 げん 增強 ぞうきょう 一 いち 些類似 るいじ Simula 的 てき 特 とく 點 てん [ 3] 。之 これ 所以 ゆえん 選擇 せんたく C,是 ぜ 因 いん 為 ため 它適於各種 かくしゅ 用途 ようと 、快速 かいそく 和 わ 可 か 移植 いしょく 性 せい 。除 じょ 了 りょう C语言和 わ Simula 之 これ 外 がい ,同時 どうじ 也從其它語 ご 言 げん 中 ちゅう 取得 しゅとく 靈感 れいかん ,如ALGOL 68 、Ada 、CLU 以及ML 。
剛 つよし 開始 かいし 時 じ ,類別 るいべつ 、衍生類別 るいべつ 、儲 もうか 存 そん 類型 るいけい 檢 けん 查、內聯 和 わ 缺 かけ 省 しょう 参 さん 数 すう 特性 とくせい ,都 みやこ 是 ただし 透過 とうか Cfront 引入C語 ご 言 げん 之 の 中 なか [ 4] 。
1983年 ねん ,C with Classes 改 あらため 命名 めいめい 為 ため C++(++
是 ぜ C语言中 ちゅう 的 てき 增 ぞう 值操作 そうさ 符 ふ )。加入 かにゅう 了 りょう 新 しん 的 てき 特性 とくせい ,其中包括 ほうかつ 虛 きょ 擬 なずらえ 函 はこ 式 しき 、函 はこ 式 しき 名和 なわ 運算 うんざん 子 こ 多 た 載 の 、參考 さんこう 、常數 じょうすう 、使用 しよう 者 しゃ 可 か 控 ひかえ 制 せい 的 てき 自由 じゆう 空間 くうかん 儲 もうか 存 そん 區 く 控 ひかえ 制 せい 、改良 かいりょう 的 てき 型 がた 別 べつ 檢 けん 查,并恢复了BCPL风格的 てき 雙 そう 斜線 しゃせん (//
)單行 たんこう 注 ちゅう 释(之 これ 后 きさき C99 也支持 しじ 了 りょう 这种注 ちゅう 释)。
1985年 ねん ,發 はつ 佈第一 いち 版 はん 《C++程 ほど 式 しき 設計 せっけい 語 ご 言 げん 》,提供 ていきょう 一 いち 個 こ 重點的 じゅうてんてき 語 ご 言 げん 參考 さんこう ,至 いたり 此還不 ふ 是 ぜ 官 かん 方 かた 標準 ひょうじゅん [ 5] 。1985年 ねん 10月 がつ 出現 しゅつげん 了 りょう 第 だい 一 いち 個 こ 商業 しょうぎょう 化 か 發 はつ 佈。
1989年 ねん ,發 はつ 佈了Release 2.0 。引入了 りょう 多重 たじゅう 繼承 けいしょう 、抽象 ちゅうしょう 類別 るいべつ 、靜態 せいたい 成員 せいいん 函 はこ 式 しき 、常數 じょうすう 成員 せいいん 函 はこ 式 しき ,以及成員 せいいん 保護 ほご 。1990年 ねん ,出版 しゅっぱん 了 りょう The Annotated C++ Reference Manual 。這本書 しょ 後來 こうらい 成 なり 為 ため 標準 ひょうじゅん 化 か 的 てき 基礎 きそ 。稍 やや 後 ご 還 かえ 引入了 りょう 模 も 板 ばん 、例外 れいがい 處理 しょり 、命名 めいめい 空間 くうかん 、新 しん 的 てき 強制 きょうせい 类型转换 ,以及布 ぬの 林 りん 类型。
隨 ずい 著 ちょ C++語 かたり 言 げん 的 てき 演 えんじ 變 へん ,也逐漸 やや 演 えんじ 化 か 出 で 相應 そうおう 的 てき 標準 ひょうじゅん 程 ほど 式 しき 庫 こ 。最 さい 先 さき 加 か 進 すすむ C++標準 ひょうじゅん 函 はこ 式 しき 庫 こ 的 てき 是 ぜ 串 くし 流 りゅう I/O 程 ほど 式 しき 庫 こ ,其用以取代 だい 傳統 でんとう 的 てき C函 はこ 式 しき ,如printf 和 わ scanf 。隨 ずい 後 ご 所 しょ 引入的 てき 程 ほど 式 しき 庫 こ 中 ちゅう 最 さい 重要 じゅうよう 的 てき 便 びん 是 ぜ 標準 ひょうじゅん 模 も 板 いた 庫 こ ,簡稱STL 。
多年 たねん 後 ご ,一 いち 個 こ 聯合 れんごう 的 てき ANSI -ISO 委員 いいん 會 かい 於1998年 ねん 對 たい C++標準 ひょうじゅん 化 か (ISO/IEC 14882 :1998 )。在官 ざいかん 方 かた 釋 しゃく 出 いずる 1998標準 ひょうじゅん 的 てき 若干 じゃっかん 年 ねん 後 ご ,委員 いいん 會 かい 處理 しょり 缺陷 けっかん 報告 ほうこく ,並 なみ 於2003年 ねん 發 はつ 佈一 いち 個 こ C++標準 ひょうじゅん 的 てき 修正 しゅうせい 版本 はんぽん 。2005年 ねん ,一 いち 份名為 ため Library Technical Report 1 (簡稱TR1 )的 てき 技術 ぎじゅつ 報告 ほうこく 釋 しゃく 出 いずる 。雖然還 かえ 不 ふ 是 ぜ 官 かん 方 かた 標準 ひょうじゅん 的 てき 一 いち 部分 ぶぶん ,不 ふ 過 か 它所提供 ていきょう 的 てき 幾 いく 個 こ 擴展可 か 望 もち 成 なり 為 ため 下 か 一 いち 版 はん C++標準 ひょうじゅん 的 てき 一 いち 部分 ぶぶん 。幾 いく 乎所有 しょゆう 目前 もくぜん 仍在維護的 てき C++編 へん 譯 やく 器 き 皆 みな 已 やめ 支援 しえん TR1 。
目前 もくぜん 最新 さいしん 的 てき C++标准是 ぜ 2020年 ねん 12月发布的 てき ISO/IEC 14882 :2020[ 6] ,又 また 称 たたえ C++20 。
雖然C++本身 ほんみ 無 む 專 せん 利 り ,但 ただし 標準 ひょうじゅん 文 ぶん 件 けん 本身 ほんみ 並 なみ 不 ふ 是 ぜ 免 めん 費 ひ 的 てき ,尽 つき 管 かん 标准文 ぶん 档不是 ぜ 免 めん 费的,但 ただし 是 ぜ 很容易 ようい 从网络中取得 しゅとく ,最 さい 简单的 てき 就是C++标准文 ぶん 档之前 まえ 的 てき 最 さい 后 きさき 一 いち 次 じ 草稿 そうこう 版本 はんぽん ,它与标准的 てき 差 さ 别几乎只在 ざい 于排版 ばん 上 じょう 。
C++這個名字 みょうじ 是 ぜ Rick Mascitti於1983年 ねん 中 ちゅう 所 しょ 建議 けんぎ 的 てき ,並 なみ 於1983年 ねん 12月首 くび 次 じ 使用 しよう 。更 さら 早 はや 以前 いぜん ,尚 なお 在 ざい 研究 けんきゅう 階段 かいだん 的 てき 發展 はってん 中 ちゅう 語 ご 言 げん 曾被稱 しょう 為 ため 「new C 」,之 これ 後 ご 是 ぜ 「C with Classes 」。在 ざい 電腦 でんのう 科學 かがく 中 なか ,C++仍被稱 しょう 為 ため C語 ご 言 げん 的 てき 上層 じょうそう 結構 けっこう 。它最後 ご 得 とく 名 めい 於C語 ご 言 げん 中 ちゅう 的 てき 「++」運算 うんざん 子 こ (其對變數 へんすう 的 てき 值進行 しんこう 遞增 ていぞう )。而且在 ざい 共同 きょうどう 的 てき 命名 めいめい 約定 やくじょう 中 ちゅう ,使用 しよう 「+」以表示 ひょうじ 增強 ぞうきょう 的 てき 程 ほど 式 しき 。斯特劳斯特 とく 鲁普說 せつ :「這個名字 みょうじ 象徵 しょうちょう 著 ちょ 源 げん 自 じ 於C語 ご 言 げん 變化 へんか 的 てき 自然 しぜん 演 えんじ 進 すすむ 」。C+ 是 ぜ 一 いち 個 こ 和 わ C/C++無關 むせき 的 てき 早期 そうき 程 ほど 式 しき 語 ご 言 げん 。
Rick Mascitti在 ざい 1992年 ねん 被 ひ 非 ひ 正式 せいしき 地 ち 問 とい 起 おこり 名字 みょうじ 的 てき 由來 ゆらい ,他 た 表示 ひょうじ 這是在 ざい 半開 はんかい 玩笑中 ちゅう 說 せつ 出 で 的 てき 。他 た 從 したがえ 沒 ぼつ 想 おもえ 過 か C++會 かい 成 なり 為 ため 這門語 ご 言 げん 的 てき 正式 せいしき 名字 みょうじ 。
有 ゆう 一 いち 個 こ 關 せき 於C++名字 みょうじ 的 てき 笑話 しょうわ 是 ぜ ,當 とう 你使用後 ようご 綴 つづり ++時 とき ,附加 ふか 只 ただ 發生 はっせい 在 ざい 運算 うんざん 之 これ 後 ご (因 いん 此,它應該是++C,而不是 ぜ C++,这个笑 わらい 话是说时下 か 某 ぼう 些程序 じょ 员还在 ざい 以使用 しよう C的 てき 方式 ほうしき 使用 しよう C++,这通常 つうじょう 被 ひ 一些权威著作认为是不正确的)。
由 ゆかり ISO/IEC JTC1/SC22/WG21 进行。已 やめ 经出版 しゅっぱん 的 てき 标准文 ぶん 档如下 か :
发布时间
文 ぶん 档
通称 つうしょう
备注
2023
N4950(草稿 そうこう ,发布于2023-05-10)[ 7]
C++23
2020
ISO/IEC 14882:2020[ 6]
C++20
2018
ISO/IEC TS 21544:2018[ 8]
modules TS
模 かたぎ 块
2018
ISO/IEC TS 19570:2018[ 9]
parallelism TS
并行扩展
2018
ISO/IEC TS 19216:2018[ 10]
networking TS
网络库
2017
ISO/IEC 14882:2017[ 11]
C++17
第 だい 五 ご 个C++标准
2017
ISO/IEC TS 22277:2017[ 12]
coroutines TS
协程库扩展 てん
2017
ISO/IEC TS 21425:2017[ 13]
ranges TS
提供 ていきょう 范围机 つくえ 制 せい
2017
ISO/IEC TS 19568:2017[ 14]
library fundamentals TS
标准库扩展 てん
2016
ISO/IEC TS 19571:2016[ 15]
concurrency TS
用 よう 于并发计算 さん 的 てき 扩展
2015
ISO/IEC TS 19217:2015[ 16]
concepts TS
概念 がいねん 库,用 よう 于优化 か 编译期 き 信 しん 息 いき
2015
ISO/IEC TS 19841:2015[ 17]
TM TS
事 こと 务性内 ない 存 そん 操作 そうさ
2015
ISO/IEC TS 19570:2015[ 18]
parallelism TS
用 よう 于并行 ぎょう 计算的 てき 扩展
2015
ISO/IEC TS 18822:2015[ 19]
filesystem TS
文 ぶん 件 けん 系 けい 统
2014
ISO/IEC 14882:2014[ 20]
C++14
第 だい 四 よん 个C++标准
2011
ISO/IEC TR 24733:2011[ 21]
-
十进制浮点数扩展
2011
ISO/IEC 14882:2011[ 22]
C++11
第 だい 三 さん 个C++标准
2010
ISO/IEC TR 29124:2010[ 23]
-
数学 すうがく 函数 かんすう 扩展
2007
ISO/IEC TR 19768:2007[ 24]
C++TR1
C++技 わざ 术报告 つげ :库扩展 てん
2006
ISO/IEC TR 18015:2006[ 25]
-
C++性能 せいのう 技 わざ 术报告 つげ
2003
ISO/IEC 14882:2003[ 26]
C++03
第 だい 二 に 个C++标准
1998
ISO/IEC 14882:1998[ 27]
C++98
第 だい 一 いち 个C++标准
在 ざい 《C++語 かたり 言 げん 的 てき 設計 せっけい 和 わ 演 えんじ 化 か 》(1994)中 ちゅう ,Bjarne Stroustrup 描述了 りょう 他 た 在 ざい 設計 せっけい C++時 とき ,所 しょ 使用 しよう 的 てき 一 いち 些原則 げんそく 。知道 ともみち 這些原則 げんそく 有 ゆう 助 じょ 於理解 りかい C++為 ため 何 なん 會 かい 是 ぜ 現在 げんざい 這個樣子 ようす 。以下 いか 總 そう 結 ゆい 了 りょう 一 いち 些原則 げんそく ,詳 しょう 盡 つき 的 てき 內容可 か 參 さん 閱《C++語 かたり 言 げん 的 てき 設計 せっけい 和 わ 演 えんじ 化 か 》:
C++設計 せっけい 成 なり 直接的 ちょくせつてき 和廣 かずひろ 泛的支援 しえん 多種 たしゅ 程 ほど 式 しき 設計 せっけい 風格 ふうかく (過程 かてい 化 か 程 ほど 式 しき 設計 せっけい 、数 かず 据 すえ 抽象 ちゅうしょう 、物件 ぶっけん 導 みちびけ 向 こう 程 ほど 式 しき 設計 せっけい 、泛型程 ほど 式 しき 設計 せっけい )。
C++設計 せっけい 成 なり 給 きゅう 程 ほど 式 しき 設計 せっけい 者 しゃ 更 さら 多 た 的 てき 選擇 せんたく ,即 そく 使 つかい 可能 かのう 導 しるべ 致程式 しき 設計 せっけい 者 しゃ 選擇 せんたく 錯誤 さくご 。
C++設計 せっけい 成 なり 儘可能 かのう 與 あずか C相 あい 容 よう ,藉此提供 ていきょう 一 いち 個 こ 從 したがえ C到 いた C++的 てき 平滑 へいかつ 過渡 かと 。
C++避免平台 ひらだい 限定 げんてい 或 ある 沒 ぼつ 有 ゆう 普遍 ふへん 用途 ようと 的 てき 特性 とくせい 。
C++不 ふ 使用 しよう 會 かい 帶 たい 來 らい 額 がく 外 がい 開 ひらき 銷的特性 とくせい 。
C++設計 せっけい 成 なり 無 む 需複雜 ふくざつ 的 てき 程 ほど 式 しき 設計 せっけい 環境 かんきょう 。
1998的 てき C++標準 ひょうじゅん 分 ぶん 為 ため 兩個 りゃんこ 部分 ぶぶん :核心 かくしん 語 ご 言 げん 和 わ C++標準 ひょうじゅん 程 ほど 式 しき 庫 こ ;後者 こうしゃ 包含 ほうがん 了 りょう 大 だい 部分 ぶぶん 標準 ひょうじゅん 模 も 板 いた 庫 こ 和 わ C標準 ひょうじゅん 程 ほど 式 しき 庫 こ 的 てき 稍 やや 加 か 修 おさむ 改版 かいはん 本 ほん 。存在 そんざい 許多 きょた 不 ふ 屬 ぞく 於標準 じゅん 部分 ぶぶん 的 てき C++程 ほど 式 しき 庫 こ ,且使用 しよう 外部 がいぶ 連結 れんけつ ,程 ほど 式 しき 庫 こ 甚至可 か 以用C 撰 せん 寫 うつし 。
C++標準 ひょうじゅん 程 ほど 式 しき 庫 こ 充分 じゅうぶん 吸收 きゅうしゅう 了 りょう C標準 ひょうじゅん 程 ほど 式 しき 庫 こ ,並 なみ 佐 さ 以少許 もと 的 てき 修 おさむ 改 あらため ,使 つかい 其與C++良好 りょうこう 的 てき 運 うん 作 さく 。另一個大型的程式庫部分,是 ぜ 以標準 ひょうじゅん 模 も 板 いた 庫 こ (STL )為 ため 基礎 きそ ,STL 於1994年 ねん 2月 がつ 正式 せいしき 成 なり 為 ため ANSI/ISO C++。它提供 ていきょう 了 りょう 實用 じつよう 的 てき 工具 こうぐ ,如容器 ようき 类 (如:Array 和 わ Vector ),迭代器 き (廣義 こうぎ 指 ゆび 针 )提供 ていきょう 容器 ようき 以類似 るいじ 陣列 じんれつ 的 てき 存 そん 取 と 方式 ほうしき ,以及泛型 算法 さんぽう 進行 しんこう 搜 さがせ 尋 ひろ 和 わ 排 はい 序 じょ 的 てき 運算 うんざん 。此外還 かえ 提供 ていきょう 了 りょう (multi)map和 わ (multi)set,它們都 と 共 ども 享 とおる 相似 そうじ 的 てき 成 なり 员函数 すう 。因 よし 此,以下 いか 成 なり 為 ため 可能 かのう ,使用 しよう 模 も 板 ばん 撰 せん 寫 うつし 泛型算法 さんぽう ,它可以和任 にん 何 なん 容器 ようき 或 ある 在任 ざいにん 何 なん 以迭代 だい 器 き 定義 ていぎ 的 てき 序列 じょれつ 上 じょう 運 うん 作 さく 。如同C,使用 しよう #include
指令 しれい 包含 ほうがん 標準 ひょうじゅん 表 ひょう 頭 あたま ,即 そく 可 か 存 そん 取 と 程 ほど 式 しき 庫 こ 裡 うら 的 てき 功 こう 能 のう 。C++提供 ていきょう 69個 こ 標準 ひょうじゅん 表 ひょう 頭 あたま ,其中19個 こ 不 ふ 再 さい 贊成 さんせい 使用 しよう 。
使用 しよう 標準 ひょうじゅん 模 も 板 いた 庫 こ (例 れい 如:使用 しよう std::vector
或 ある std::string
來 き 取 ど 代 だい C風格 ふうかく 的 てき 数 すう 组或字 じ 符 ふ 数 すう 组)有 ゆう 助 じょ 於开发更安全 あんぜん 和 わ 更 さら 靈 れい 活 かつ 的 てき 软件。
在 ざい STL 在 ざい 納入 のうにゅう C++標準 ひょうじゅん 以前 いぜん ,是 ぜ 來 き 自 じ HP 和 わ 後來 こうらい 的 てき SGI 的 てき 第 だい 三 さん 方程式 ほうていしき 庫 こ ,標準 ひょうじゅん 中 ちゅう 並 なみ 未 み 稱 しょう 之 の 為 ため 「STL 」,它只是 ぜ 標準 ひょうじゅん 庫 こ 中 ちゅう 的 てき 一 いち 部分 ぶぶん ,但 ただし 仍有許多 きょた 人 じん 使用 しよう 這個名稱 めいしょう ,以別於其它的標準 ひょうじゅん 庫 こ (輸入 ゆにゅう /輸出 ゆしゅつ 串 くし 流 りゅう 、國際 こくさい 化 か 、診斷 しんだん 、C程 ほど 式 しき 庫 こ 子 こ 集 しゅう ,等 とう 等 とう )。
另外,如std::basic_string
此类标准委 い 员会添加 てんか 的 てき 接 せっ 口 こう ,有 ゆう 时也被 ひ 误认为STL ;实际上 じょう 它们并不存在 そんざい 于原始 げんし 的 てき SGI STL 中 なか ,在 ざい 标准化 か 后 きさき SGI STL 才 ざい 从标准 じゅん 库吸收 きゅうしゅう 加入 かにゅう 其中。
和 わ C語 ご 言 げん 相 しょう 比 ひ ,C++引入了 りょう 更 さら 多 た 的 てき 特性 とくせい ,包括 ほうかつ :复合类型(引用 いんよう 類型 るいけい 等 とう )、const 限定 げんてい 符 ふ 和 わ constexpr 常 つね 量 りょう 表 ひょう 达式、类型处理运算符 ふ (类型别名及auto 和 わ decltype 等 ひとし 多 た 种类型 がた 指示 しじ 符 ふ )、C++标准库(IO 库与多 た 种容器 き 类)与 あずか 迭代器 き 、动态内 ない 存 そん 与 あずか 智能 ちのう 指 ゆび 针、函 はこ 数 すう 重 じゅう 載 の 、面 めん 向 こう 对象程 ほど 序 じょ 设计(如数据 すえ 抽象 ちゅうしょう 、成員 せいいん 函数 かんすう 、类作用 よう 域 いき 、构造函数 かんすう 与 あずか 析构函数 かんすう 、静 せい 态成员、访问控 ひかえ 制 せい 与 あずか 繼承 けいしょう 、虚 きょ 函数 かんすう 、抽象 ちゅうしょう 类与接 せっ 口 こう 等 とう )、拷贝控 ひかえ 制 せい 、运算符 ふ 重 じゅう 载、造型 ぞうけい 与 あずか 函数 かんすう 风格的 てき 強制 きょうせい 类型转换、模 も 板 ばん 与 あずか 泛型编程,以及異常 いじょう 處理 しょり 、命名 めいめい 空間 くうかん 、多 た 继承与 あずか 虚 むなし 继承、运行时类型 がた 识别及嵌套类等 とう 。
C++在 ざい 某 ぼう 些案例 れい 中 ちゅう (見 み 下 か 「與 あずか C不 ふ 相 あい 容 よう 之 の 處 しょ 」),進行 しんこう 比 ひ C還 かえ 要 よう 多 た 的 てき 類型 るいけい 檢 けん 查。
以「//
」起 おこり 始 はじめ 作為 さくい 註解 ちゅうかい 起源 きげん 自 じ C的 てき 前身 ぜんしん BCPL ,而後被 ひ 重 じゅう 新 しん 引入到 いた C++。
C++的 てき 一 いち 些特性 せい ,C不 ふ 久之 ひさゆき 後 ご 也採用 さいよう 了 りょう ,包括 ほうかつ 在 ざい for 循环的 てき 括 くく 号 ごう 中 ちゅう 声明 せいめい ,C++風格 ふうかく 的 てき 註解 ちゅうかい (使用 しよう //
符號 ふごう ,和 わ inline
,雖然C99定義 ていぎ 的 てき inline
關 せき 鍵 かぎ 字 じ 與 あずか C++的 てき 定義 ていぎ 不 ふ 相 あい 容 よう 。不 ふ 過 か ,C99 也引入 にゅう 了 りょう 不 ふ 存在 そんざい 於C++的 てき 特性 とくせい ,如:可 か 变参数 すう 巨 きょ 集 しゅう ,和 かず 以陣列 じんれつ 作為 さくい 參 さん 數 すう 的 てき 較佳處理 しょり ;某 ぼう 些C++編 へん 譯 やく 器 き 可 か 能實 のうじつ 作 さく 若干 じゃっかん 特性 とくせい ,以作為 さくい 擴展,但 ただし 其餘部分 ぶぶん 並 なみ 不 ふ 符合 ふごう 現存 げんそん 的 てき C++特性 とくせい )
一個常見的混淆其實只是一個微妙的術語問題:由 よし 於它的 てき 演 えんじ 化 か 來 き 自 じ C,在 ざい C++中 ちゅう 的 てき 術語 じゅつご 对象 和 わ C語 ご 言 げん 一 いち 樣 よう 是 ぜ 意味 いみ 著 ちょ 記憶 きおく 體 たい 區域 くいき ,而不是 ぜ 類別 るいべつ 的 てき 實體 じったい ,在 ざい 其它絕大 ぜつだい 多數 たすう 的 てき 物件 ぶっけん 導 しるべ 向 むこう 語 かたり 言 げん 也是如此。舉例來 らい 說 せつ ,在 ざい C和 わ C++中 ちゅう ,語句 ごく int i;
定義 ていぎ 一 いち 個 こ int
型 かた 別 べつ 的 てき 物件 ぶっけん ,這就是 ぜ 變數 へんすう 的 てき 值i
將 はた 在 ざい 指 ゆび 派 は 時 じ ,所存 しょぞん 入 いれ 的 てき 記憶 きおく 體 たい 區域 くいき 。
const
是 ぜ 一 いち 个C和 わ C++语言的 てき 关键字 じ ,意思 いし 是 ぜ 声明 せいめい 一個不能改變值的变量,即 そく 只 ただ 读。使用 しよう const
在 ざい 一定程度上可以提高程序的安全性和可靠性,也便于实现对此进行 ぎょう 优化(如把只 ただ 读对象 ぞう 放 ひ 入 いれ ROM 中 なか )。const
作 さく 为型別 べつ 限定 げんてい 符 ふ ,是 ぜ 型 がた 別 べつ 的 てき 一 いち 部分 ぶぶん 。
C++不 ふ 是 ぜ 第 だい 一 いち 個 こ 正式 せいしき 引入const
类型的 てき 语言。80年代 ねんだい 早期 そうき ,Bjarne Stroustrup 和 わ Dennis Retchie 讨论之 の 后 きさき 提供 ていきょう 了 りょう 在 ざい C语言中 ちゅう readonly
/writeonly
的 てき 实现机 つくえ 制 せい ,并在带類的 てき C中 ちゅう 取得 しゅとく 了 りょう 一定 いってい 经验。关键字 じ const
正式 せいしき 引入C語 ご 言 げん 是 ぜ 在 ざい ANSI C89。这早于第一 いち 个C++国 くに 际标准 なぞらえ 近 きん 十 じゅう 年 ねん ,但 ただし 此时const
已 やめ 被 ひ C++实现普遍 ふへん 採用 さいよう 。
以下 いか 是 ぜ 和 わ C语言相 しょう 容 よう 的 てき 用法 ようほう :
int m = 1 , n = 2 ; // int 类型的 てき 对象
const int a = 3 ; // const int 类型的 てき 对象
int const b = 4 ; //同上 どうじょう
const int * p //指向 しこう const int 类型对象的 てき 指 ゆび 针
int const * q ; //同上 どうじょう
int * const x ; //指向 しこう int 类型对象的 てき const 指 ゆび 针;注意 ちゅうい const 的 てき 位置 いち
const int * const r ; //指向 しこう const int 类型对象的 てき const 指 ゆび 针
int const * const t ; //同上 どうじょう
但 ただし 是 ぜ ,const
在 ざい C++中有 ちゅうう 更 さら 强大 きょうだい 的 てき 特性 とくせい 。它允许在编译时确定 じょう 作 さく 为真正 しんせい 的 てき 常 つね 量 りょう 表 ひょう 达式。例 れい 如,
const int max_len = 42 ;
int a [ max_len ];
此前C语言并不支持 しじ 这样的 てき 用法 ようほう ,直 ちょく 到 いた C99 允 まこと 许用变量作 さく 为数组长度 ど (需要 じゅよう 注意 ちゅうい 的 てき 是 ぜ C99 中 なか 的 てき VLA 支持 しじ 运行期 き 确定数 すう 组长度 ど ,但 ただし C++从未支持 しじ )。此外,C++中 ちゅう ,命名 めいめい 空 そら 间作用 よう 域 いき 的 てき const 对象的 てき 名称 めいしょう 隐含内部 ないぶ 链接。这意味 いみ 着 ぎ 直接 ちょくせつ 在 ざい 头文件 けん 里 さと 定 てい 义const 对象被 ひ 多 た 个源文 ぶん 件 けん 包含 ほうがん 时,也不会 かい 重定 しげさだ 义。
在 ざい C++11及之后 きさき 的 てき C++标准中 ちゅう ,推荐使用 しよう 拥有更 さら 严格语义的 てき constexpr
限定 げんてい 符 ふ 来 らい 表示 ひょうじ 一个可以出现在常量表达式中的变量。const可 か 区分 くぶん 为顶层const(top-level const)和 かず 底 そこ 层const(low-level const)。
实际上 じょう ,在 ざい 语义表 ひょう 达方面 めん ,const
更 さら 多 た 表示 ひょうじ 为“只 ただ 读”,constexpr
才 ざい 表示 ひょうじ 一定能在翻译时确定的常量,但 ただし 实际求 もとめ 值仍可能 かのう 在 ざい 运行时进行 ぎょう (只 ただ 有 ゆう 像 ぞう 作 さく 为声明 せいめい 数 すう 组大小 しょう 这样确定要求 ようきゅう 常 つね 量 りょう 表 ひょう 达式的 てき 上下 じょうげ 文中 ぶんちゅう ,才 さい 会 かい 因 いん 为需要 よう 确保翻 こぼし 译时必须确定所 しょ 需的值而进行翻 こぼし 译时求 もとめ 值)。C++20引入了 りょう 更 さら 严格的 てき consteval
和 わ constinit
的 てき 语法,直接 ちょくせつ 限定 げんてい 特定 とくてい 的 てき 求 もとめ 值必须在翻 こぼし 译时完成 かんせい 。不 ふ 过,和 わ const
不同 ふどう ,后 きさき 三者修饰声明但不是类型限定 げんてい 符 ふ ,不 ふ 参与 さんよ 类型声明 せいめい 构成复合类型,不通 ふつう 过类型检查 实现所 しょ 谓的const正 せい 确性(const correctness),也不影 かげ 响利用 りよう 这些特性 とくせい 的 てき 相 しょう 关API 的 てき 类型签名 。
一 いち 些参照 さんしょう C和 わ C++设计的 てき 语言中 ちゅう ,也存在 そんざい 类似的 てき 差 さ 异。例 れい 如,C#同 どう 时具有 ぐゆう readonly
和 わ const
关键字 じ ,前者 ぜんしゃ 接近 せっきん 原始 げんし 的 てき “只 ただ 读”(即 そく 最 さい 先 さき 被 ひ 讨论的 てき readonly机 つくえ 制 せい 和 わ C语言中 ちゅう 的 てき const
),而后者 しゃ 更 さら 接近 せっきん C++的 てき const
。
C++有 ゆう 时被认为是 ぜ C的 てき 超 ちょう 集 しゅう (superset ),但 ただし 这並不 ふ 严谨。
各 かく 个版本 はんぽん 的 てき ISO/IEC 14882 的 てき 附 ふ 录C中 ちゅう 都 と 指出 さしで 了 りょう C++和 わ ISO C 的 てき 一些不兼容之处。
大 だい 部分 ぶぶん 的 てき C代 だい 码可以很轻易的 てき 在 ざい C++中正 ちゅうせい 确编译,但 ただし 仍有少数 しょうすう 差 さ 异,导致某 ぼう 些有效 ゆうこう 的 てき C代 だい 码在C++中 ちゅう 失效 しっこう ,或 ある 者 もの 在 ざい C++中有 ちゅうう 不同 ふどう 的 てき 行 ぎょう 为。
最 さい 常 つね 见的差 さ 异之一 いち 是 ぜ ,C允 まこと 许从void*
隐式转换到其它的 てき 指 ゆび 标类型 がた ,但 ただし C++不 ふ 允 まこと 许。下 した 列 れつ 是 ぜ 有效 ゆうこう 的 てき C代 だい 码:
// 从void *隐式转换为int *
int * i = malloc ( sizeof ( int ) * 5 );
但 ただし 要 よう 使 つかい 其在C和 わ C++两者 皆 みな 能 のう 运作,就需要 よう 使用 しよう 显式转换:
int * i = ( int * ) malloc ( sizeof ( int ) * 5 );
另一个常见的可 か 移植 いしょく 問題 もんだい 是 ぜ ,C++定 てい 义了很多的 てき 新 しん 关键字 じ ,如new
和 わ class
,它们在 ざい C程 ほど 式 しき 中 ちゅう ,是 ぜ 可 か 以作为识別 べつ 字 じ (例 れい :变量名 めい )的 てき 。
C99 去 さ 除 じょ 了 りょう 一些不兼容之处,也新增 ぞう 了 りょう 一 いち 些C++的 てき 特性 とくせい ,如//
注 ちゅう 释,以及在 ざい 代 だい 码中混合 こんごう 使用 しよう 。不 ふ 过C99也纳入 にゅう 几个和 わ C++冲突的 てき 新 しん 特性 とくせい (如:可 か 变长数 すう 组、原生 げんせい 复数类型和 わ 复合逐字 ちくじ 常数 じょうすう ),而C++11已 やめ 经加入 かにゅう 了 りょう 兼 けん 容 よう C99预处理 り 器 き 的 てき 特性 とくせい 。
由 よし 于C++函数 かんすう 和 わ C函数 かんすう 通常 つうじょう 具有 ぐゆう 不同 ふどう 的 てき 名字 みょうじ 修 おさむ 饰和 わ 调用约定 ,所有 しょゆう 在 ざい C++中 ちゅう 呼 よび 叫 さけべ 的 てき C函数 かんすう ,须放在 ざい extern "C" { /* C函数 かんすう 声明 せいめい */ }
之 これ 內。
C++的 てき Hello World 程 ほど 序 じょ
编辑
下面 かめん 这个程 ほど 序 じょ 显示“Hello, world!”然 しか 后 きさき 结束运行:
#include <iostream>
// import <iostream>; // C++20 起 おこり
// import std; // C++23 起 おこり
int main () {
std :: cout << "Hello, world!" << std :: endl ;
// std::println("Hello, world!"); // C++23 起 おこり
return 0 ;
}
这里也可以使用 しよう using 指令 しれい 以避免 めん 多 た 次 つぎ 声明 せいめい std::——
#include <iostream>
using namespace std ;
int main () {
cout << "Hello, world!" << endl ;
return 0 ;
}
如果使用 しよう “\n”代替 だいたい 以上 いじょう 代 だい 碼裡的 てき “endl ”,输出结果相等 そうとう 。
std :: cout << "Hello, world! \n " ;
std::endl 不 ふ 仅仅会 かい 在 ざい 某 ぼう 个输出流 いずる 中 ちゅう 插入 そうにゅう 换行字 じ 符 ふ ,还将执行输出流 りゅう 的 てき flush() 函数 かんすう (即 そく 刷新 さっしん 缓冲区 く ),而'\n'则不会 かい 。
根 ね 据 すえ ISO C++的 てき 规定,全局 ぜんきょく main 函数 かんすう 必须返 かえし 回 かい int 。
以下 いか 两种形式 けいしき 是 ぜ 合法 ごうほう 的 てき :
int main ( int argc , char * argv []) {
// ...
}
不 ふ 过,在 ざい 一 いち 些编译器(例 れい 如Visual C++ )上 じょう ,
也是合法 ごうほう 的 てき 。但 ただし 是 ぜ 这样的 てき 写 うつし 法 ほう 兼 けん 容 よう 性 せい 较差。
分 ぶん 為 ため
優先 ゆうせん 權 けん
運算 うんざん 子 こ
說明 せつめい
結合 けつごう 性 せい
1
()
括 くく 號 ごう
由 よし 左 ひだり 至 いたり 右 みぎ
2
!、-、++、--
邏輯運算 うんざん 子 こ NOT、算術 さんじゅつ 運算 うんざん 子 こ 負號 ふごう 、遞增 ていぞう 、遞減 ていげん
由 よし 右 みぎ 至 いたり 左 ひだり
3
*、/、%
算術 さんじゅつ 運算 うんざん 子 こ 的 てき 乘法 じょうほう 、除法 じょほう 、餘 よ 數 すう
由 よし 左 ひだり 至 いたり 右 みぎ
4
+、-
算術 さんじゅつ 運算 うんざん 子 こ 加法 かほう 、減法 げんぽう
由 よし 左 ひだり 至 いたり 右 みぎ
5
<<、>>、>>>
位 くらい 元 もと 運算 うんざん 子 こ 左 ひだり 移 うつり 、右 みぎ 移 うつり 、無 む 符號 ふごう 右 みぎ 移 うつり
由 よし 左 ひだり 至 いたり 右 みぎ
6
>、>=、<、<=
關係 かんけい 運算 うんざん 子 こ 大 だい 於、大 だい 於等於、小 しょう 於、小 しょう 於等於
由 よし 左 ひだり 至 いたり 右 みぎ
7
==、!=
關係 かんけい 運算 うんざん 子 こ 等 とう 於、不等 ふとう 於
由 よし 左 ひだり 至 いたり 右 みぎ
8
&
位 くらい 元 もと 運算 うんざん 子 こ AND
由 よし 左 ひだり 至 いたり 右 みぎ
9
^
位 くらい 元 もと 運算 うんざん 子 こ XOR
由 よし 左 ひだり 至 いたり 右 みぎ
10
|
位 くらい 元 もと 運算 うんざん 子 こ OR
由 よし 左 ひだり 至 いたり 右 みぎ
11
&&
邏輯運算 うんざん 子 こ AND
由 よし 左 ひだり 至 いたり 右 みぎ
12
||
邏輯運算 うんざん 子 こ OR
由 よし 左 ひだり 至 いたり 右 みぎ
13
?:
條件 じょうけん 控 ひかえ 制 せい 運算 うんざん 子 こ
由 よし 右 みぎ 至 いたり 左 ひだり
14
=、op=
指定 してい 運算 うんざん 子 こ
由 よし 右 みぎ 至 いたり 左 ひだり
C++主要 しゅよう 有 ゆう 三 さん 個 こ 編 へん 譯 やく 階段 かいだん :預 あずか 處理 しょり 、轉 てん 譯 やく 成 なり 目的 もくてき 碼和連結 れんけつ (最後 さいご 的 てき 兩個 りゃんこ 階段 かいだん 一般才視為真正的「編 へん 譯 やく 」)。在 ざい 第 だい 一 いち 階段 かいだん ,預 あずか 處理 しょり ,會 かい 將 しょう 預 あずか 處理 しょり 器 き 指令 しれい 替 かえ 換 かわ 成原 なりはら 始 はじめ 碼,然 しか 後送 こうそう 到 いた 下 しも 一 いち 個 こ 編 へん 譯 やく 階段 かいだん 。
預 あずか 處理 しょり 器 き 指令 しれい 和 わ 巨 きょ 集 しゅう
编辑
預 あずか 處理 しょり 指令 しれい 的 てき 運 うん 作 さく 方式 ほうしき 是 ぜ 根據 こんきょ 使用 しよう 者 しゃ 定義 ていぎ 的 てき 規則 きそく ,簡單 かんたん 的 てき 把 わ 記號 きごう 字 じ 元 もと 序列 じょれつ 置換 ちかん 成 なり 其它的 てき 記號 きごう 字 じ 元 もと 序列 じょれつ 。它們進行 しんこう 巨 きょ 集 しゅう 置換 ちかん 、含入其它的 てき 檔案(由 ゆかり 底 そこ 層 そう 至高 しこう 階 かい 的 てき 特性 とくせい ,例 れい 如包含 ほうがん 模 も 組 ぐみ /包 つつみ /單元 たんげん /元 もと 件 けん )、條件 じょうけん 式 しき 編 へん 譯 やく 和 わ 條件 じょうけん 式 しき 含入。例 れい 如:
#define PI 3.1415926535897932384626433832795028841971693993751
原始 げんし 代 だい 码中出現 しゅつげん 的 てき PI
,都 みやこ 將 すすむ 會 かい 替 かえ 換 かわ 為 ため 3.1415926535897932384626433832795028841971693993751
。另一 いち 個 こ 普遍 ふへん 的 てき 例 れい 子 こ 是 ぜ
它將使用 しよう 標準 ひょうじゅん 庫 こ 头文件 けん iostream
中 なか 的 てき 所有 しょゆう 内容 ないよう 來 らい 替 かえ 換 かわ 本條 ほんじょう 預 あずか 處理 しょり 指令 しれい 。除 じょ 了 りょう 以上 いじょう 提 ひっさげ 到 いた 的 てき 常用 じょうよう 指令 しれい 以外 いがい ,還 かえ 有 ゆう 幾 いく 個 こ 額 がく 外的 がいてき 預 あずか 處理 しょり 器 き 指令 しれい ,可 か 以用來 らい 控 ひかえ 制 せい 編 へん 譯 やく 流 りゅう 程 ほど 、條件 じょうけん 式 しき 含入或 ある 排除 はいじょ 代 だい 碼區塊 かたまり 等 とう 等 とう 。
參 まいり 閱預 あずか 處理 しょり 器 き 和 わ C預 あずか 處理 しょり 器 き
模 も 板 ばん (Template )指 ゆび C++程 ほど 式 しき 語 ご 言 げん 中 ちゅう 的 てき 函 はこ 式 しき 模 も 板 ばん (function template )與 あずか 類別 るいべつ 模 も 板 ばん (class template ),這種觀念 かんねん 是 ぜ 取材 しゅざい 自 じ Simula 的 てき 泛型程 ほど 式 しき 設計 せっけい 。它采用 よう typename 和 わ class 两个关键字 じ ,来 らい 标识模 も 板 ばん 類別 るいべつ 的 てき 型 がた 別 べつ 参 さん 数 すう 。C++11 和 わ C++14 分 ぶん 别引入 にゅう 了 りょう 类型别名模 も 板 ばん 和 わ 变量模 も 板 ばん 。
在 ざい 物件 ぶっけん 導 みちびけ 向 こう 物件 ぶっけん 程 ほど 式 しき 設計 せっけい 術語 じゅつご 中 ちゅう ,物件 ぶっけん (object )是 ぜ 資料 しりょう (data )和 かず 處理 しょり 資料 しりょう 的 てき 指令 しれい (instructions )的 てき 聯合 れんごう (association )。模擬 もぎ (simulate )實際 じっさい 世界 せかい (real-world ),物件 ぶっけん 有 ゆう 三 さん 種 しゅ 特質 とくしつ (characteristics ):狀態 じょうたい (State )、行為 こうい (Behavior )、同一 どういつ 性 せい 身分 みぶん ,並 なみ 且使用 しよう 訊息(message )來 らい 引發彼此 ひし 的 てき 互動。類別 るいべつ (class )為 ため 物件 ぶっけん 的 てき 藍 あい 圖 ず 或 ある 工廠 こうしょう ,定義 ていぎ 了 りょう 物件 ぶっけん 的 てき 抽象 ちゅうしょう 特質 とくしつ ,包括 ほうかつ 物件 ぶっけん 的 てき 屬性 ぞくせい 特質 とくしつ 和 わ 物件 ぶっけん 的 てき 行為 こうい 特質 とくしつ ,屬性 ぞくせい 的 てき 值即是 ぜ 物件 ぶっけん 的 てき 狀態 じょうたい ,行為 こうい 即 そく 是 ぜ 物件 ぶっけん 能 のう 夠做的 てき 事 こと 。
C++為 ため 類別 るいべつ 構成 こうせい 式 しき 物件 ぶっけん 導 みちびけ 向 こう 程 ほど 式 しき 設計 せっけい 語 ご 言 げん (class-based object-oriented programming language ),類別 るいべつ 概念 がいねん 具現 ぐげん 化 か (reification )地 ち 作為 さくい 二 に 等 とう 公民 こうみん (second-class citizen )出 だし 現在 げんざい C++語 かたり 言 げん 當 とう 中 ちゅう ,在 ざい 語法 ごほう 中 ちゅう 明確 めいかく 地 ち 使用 しよう 類別 るいべつ 來 らい 做到資料 しりょう 抽象 ちゅうしょう 化 か 、封 ふう 裝 そう 、模 も 組 ぐみ 化 か 、繼承 けいしょう 、子 こ 型 がた 別 べつ 多 た 型 がた 、物件 ぶっけん 狀態 じょうたい 的 てき 自動 じどう 初 はつ 始 はじめ 化 か 。C++中 ちゅう ,一 いち 個 こ 類別 るいべつ 即 そく 為 ため 一 いち 個 こ 型 がた 別 べつ ,加 か 上 じょう 封 ふう 裝 そう ,一 いち 個 こ 類別 るいべつ 即 そく 為 ため 一 いち 個 こ 抽象 ちゅうしょう 資料 しりょう 型 がた 別 べつ (Abstract Data Type ,ADT ),繼承 けいしょう 、多 た 型 がた 、模 かたぎ 板 いた 都 と 加 か 強 きょう 了 りょう 類別 るいべつ 的 てき 可 か 抽象 ちゅうしょう 性 せい 。在 ざい C++可 か 以使用 しよう class 或 ある struct 這兩個 りゃんこ 關 せき 鍵 かぎ 字 じ 宣告 せんこく 類別 るいべつ (class ),而使用 しよう new 運算 うんざん 子 こ 實體 じったい 化 か 類別 るいべつ 產 さん 生 せい 的 てき 實體 じったい (instance )即 そく 為 ため 物件 ぶっけん ,是 ぜ 一等 いっとう 公民 こうみん 。C/C++以資料 しりょう 成員 せいいん (data member )表 ひょう 達 たち 屬性 ぞくせい ,以成員 いん 函 はこ 式 しき (member function )表 ひょう 達 たち 行為 こうい 。
声明 せいめい 一 いち 个Car class :
class Car {
private :
int isRunning ;
public :
Run ();
};
但 ただし 是 ぜ 仍然需要 じゅよう 注意 ちゅうい ,严格来 らい 说,C++中 ちゅう 对象的 てき 概念 がいねん 和 わ C的 てき 对应概念 がいねん 接近 せっきん ,表示 ひょうじ 的 てき 是 ぜ 具有 ぐゆう 特定 とくてい 类型的 てき 存 そん 储,而非面 めん 向 こう 对象意 い 义上的 てき “对象”:一个对象不一定是类类型的。此外,C++意 い 义上的 てき “实例”仅指模 も 板 ばん 实例化 か 的 てき 结果,而并不 ふ 指 ゆび 对象。作 さく 为对比 ひ ,Java 的 てき “对象”和 かず “实例”的 てき 概念 がいねん 和 わ 这里的 てき 使用 しよう 一致 いっち 。
封 ふう 裝 そう (Encapsulation )是 これ 將 はた 資料 しりょう 和 わ 處理 しょり 資料 しりょう 的 てき 程 ほど 序 じょ (procedure )組合 くみあい 起 おこり 來 らい ,僅對外 たいがい 公開 こうかい 接 せっ 口 こう (interface ),达到信 しん 息 いき 隐藏(information hiding )的 てき 功 こう 能 のう 。封 ふう 裝 そう 的 てき 優 ゆう 點 てん 是能 これよし 減少 げんしょう 耦合(Coupling )。C++、Java 、C# 等 とう 語 ご 言 げん 定義 ていぎ 对象都 と 是 ぜ 在 ざい 語法 ごほう 中 ちゅう 明確 めいかく 地 ち 使用 しよう 類別 るいべつ (Class )來 らい 做到封 ふう 裝 そう 。
C++的 てき 類別 るいべつ 对其成 なり 员(包括 ほうかつ 数 すう 据 すえ 成 なり 员、函数 かんすう 成 なり 员)分 ぶん 为三种封装状态:
公有 こうゆう (public ):類別 るいべつ 的 てき 用 よう 户可以访问、使用 しよう 该類別 べつ 的 てき 此种成 なり 员。
保 ほ 护(protected ):该類別 べつ 的 てき 衍生類別 るいべつ 可 か 以访问、使用 しよう 该類別 べつ 的 てき 此成员。外部 がいぶ 程 ほど 序 じょ 代 だい 码不可 ふか 以访问、使用 しよう 这种成 なり 员。
私有 しゆう (private ):只 ただ 有 ゆう 類別 るいべつ 自身 じしん 的 てき 成 なり 员函数 すう 可 か 以访问、使用 しよう 该類別 べつ 的 てき 此成员。
一般 いっぱん 可 か 以将C++類 るい 的 てき 对外接 がいせつ 口 こう 设定为公有 こうゆう 成 なり 员;類 るい 内部 ないぶ 使用 しよう 的 てき 数 すう 据 すえ 、函数 かんすう 设定为私有 しゆう 成 なり 员;供 きょう 派生 はせい 自 じ 该類別 べつ 的 てき 子 こ 類別 るいべつ 使用 しよう 的 てき 数 すう 据 すえ 、函数 かんすう 设定为保护成员。
繼承 けいしょう (Inheritance )是 ぜ 指 ゆび 派生 はせい 类(subclass )繼承 けいしょう 基 もと 类(superclass ),會 かい 自動 じどう 取得 しゅとく 超 ちょう 類別 るいべつ 除 じょ 私有 しゆう 特質 とくしつ 外的 がいてき 全部 ぜんぶ 特質 とくしつ ,同 どう 一類別的所有實體都會自動有該類別的全部特質,做到程 ほど 式 しき 碼再用 よう (reuse )。C++只 ただ 支援 しえん 類別 るいべつ 構成 こうせい 式 しき 繼承 けいしょう ,雖然同 どう 一類別的所有實體都有該類別的全部特質,但 ただし 是 ぜ 實體 じったい 能 のう 夠共享 とおる 的 てき 實體 じったい 成員 せいいん 只 ただ 限 げん 成員 せいいん 函 はこ 式 しき ,類別 るいべつ 的 てき 任 にん 何 なん 實體 じったい 資料 しりょう 成員 せいいん 乃每個 こ 實體 じったい 獨立 どくりつ 一 いち 份,因 いん 此物件 ぶっけん 間 あいだ 並 なみ 不能 ふのう 共 ども 享 とおる 狀態 じょうたい ,除 じょ 非 ひ 特質 とくしつ 為 ため 參考 さんこう 型 がた 別 べつ 的 てき 屬性 ぞくせい ,或 ある 使用 しよう 指標 しひょう 來 らい 間接 かんせつ 共 ども 享 とおる 。C++支持 しじ 的 てき 继承关系为:
公有 こうゆう 繼承 けいしょう (public inheritance ):最 さい 常用 じょうよう 繼承 けいしょう 关系,含义是 ぜ 「is-a 」關係 かんけい ,代表 だいひょう 了 りょう 在 ざい 完全 かんぜん 使用 しよう 公有 こうゆう 繼承 けいしょう 的 てき 物件 ぶっけん 類別 るいべつ 之 の 間 あいだ 的 てき 层次关系(hierarchy )。
受保護 ほご 繼承 けいしょう (protected inheritance ):基礎 きそ 類別 るいべつ 的 てき 公有 こうゆう 或 ある 保 ほ 护内容 ないよう 可 か 以被衍生類別 るいべつ ,以及由 よし 此衍生 せい 的 てき 其他類別 るいべつ 使用 しよう 。但 ただし 是 ぜ 基礎 きそ 類別 るいべつ 对外界 かい 用 よう 户是不可 ふか 见的。衍生類別 るいべつ 的 てき 用 よう 户不能 ふのう 访问基礎 きそ 類別 るいべつ 的 てき 成 なり 员、不能 ふのう 把 わ 派生 はせい 類別 るいべつ 转换(造型 ぞうけい )为基礎 きそ 類別 るいべつ 的 てき 指 ゆび 针或引用 いんよう 。
私有 しゆう 繼承 けいしょう (private inheritance ):基礎 きそ 類別 るいべつ 的 てき 公有 こうゆう 或 ある 保 ほ 护内容 ないよう 仅可以被衍生類別 るいべつ 访问。但 ただし 基礎 きそ 類別 るいべつ 对衍生類 しょうるい 別 べつ 的 てき 子 こ 類別 るいべつ 或 ある 衍生類別 るいべつ 的 てき 用 よう 户都是 ぜ 不可 ふか 见的。衍生類別 るいべつ 的 てき 子 こ 類別 るいべつ 或 ある 衍生類別 るいべつ 的 てき 用 よう 户都不能 ふのう 访问基礎 きそ 類別 るいべつ 的 てき 内容 ないよう 、不能 ふのう 把 わ 衍生類別 るいべつ 转换为基礎 きそ 類別 るいべつ 的 てき 指 ゆび 针或引用 いんよう 。
C++支持 しじ 多 た 繼承 けいしょう (multiple inheritance ,MI )。多 た 繼承 けいしょう (multiple inheritance ,MI )的 てき 優 ゆう 缺點 けってん 一直廣為使用者所爭議,許多 きょた 語 ご 言 げん (如Java )並 なみ 不 ふ 支援 しえん 多重 たじゅう 繼承 けいしょう ,而改以單一 いち 繼承 けいしょう 和 わ 介 かい 面 めん 繼承 けいしょう (interface inheritance ),而另一些語言则采用用單一繼承和混入(mixin )。C++通 つう 过虛 きょ 繼承 けいしょう (Virtual Inheritance )来 らい 解決 かいけつ 多 た 繼承 けいしょう 带来的 てき 一 いち 系列 けいれつ 问题。
Polymorphism Ad Hoc Universal Overloading Coercion Inclusion Parametric
除 じょ 了 りょう 封 ふう 裝 そう 與 あずか 繼承 けいしょう 外 がい ,C++還 かえ 提供 ていきょう 了 りょう 多 た 型 かた 功 こう 能 のう ,物件 ぶっけん 導 しるべ 向 むこう 的 てき 精神 せいしん 在 ざい 於多态(Polymorphism ),一般 いっぱん 的 てき 多 た 态,是 ぜ 指 ゆび 動態 どうたい 多 た 态,係 かかり 使用 しよう 繼承 けいしょう 和 わ 動態 どうたい 绑定(Dynamic Binding )實現 じつげん ,使用 しよう 多 た 型 がた 可 か 建立 こんりゅう 起 おこり 繼承 けいしょう 體系 たいけい (Inheritance hierarchy )。類 るい (class )與 あずか 繼承 けいしょう 只 ただ 是 ぜ 達成 たっせい 多 た 态中的 てき 一 いち 種 しゅ 手段 しゅだん ,所以 ゆえん 稱 しょう 物件 ぶっけん 導 みちびけ 向 こう 而非類別 るいべつ 導 しるべ 向 むこう 。
多 た 态又分 ぶん 成 なり 靜態 せいたい 多 た 态(Static Polymorphism )與 あずか 動態 どうたい 多 た 态(Dynamic Polymorphism )。C++语言支持 しじ 的 てき 動態 どうたい 多 た 态必須 ひっす 結合 けつごう 繼承 けいしょう 和 わ 动态绑定(Dynamic Binding )方式 ほうしき 實現 じつげん 。靜態 せいたい 多 た 态是指 ゆび 编译时决定 じょう 的 てき 多 た 态,包括 ほうかつ 重 じゅう 载和以模板 ばん (template )實現 じつげん 多 た 型 がた 的 てき 方法 ほうほう 即 そく 參 さん 數 すう 化 か 型 がた 態 たい (Parameterized Types ),是 ぜ 使用 しよう 巨 きょ 集 しゅう (macro )的 てき “程 ほど 序 じょ 代 だい 码膨脹 ぼうちょう 法 ほう ”達 たち 到 いた 多 た 型 かた 效果 こうか 。
类型轉換 てんかん (type cast )也是一種 いっしゅ 非 ひ 参 さん 数 すう 化 か (ad hoc )多 た 态的概念 がいねん ,C++提供 ていきょう dynamic_cast, static_cast等 とう 运算符 ふ 來 らい 實 み 作 さく 强制 きょうせい 类型轉換 てんかん (Coercion )。
運算 うんざん 元 もと 重 おも 載 の (operator overloading )或 ある 函 はこ 式 しき 重 おも 載 の (function overloading )也算是 ぜ 多 た 型 がた 的 てき 概念 がいねん 。
分析 ぶんせき 和 わ 處理 しょり C++原始 げんし 代 だい 碼
编辑
C/Java/C#都 と 可 か 以用某 ぼう 種 しゅ LR剖析器 き (或 ある 其變形 がた )分析 ぶんせき 文法 ぶんぽう [來 らい 源 みなもと 請求 せいきゅう ] ,但 ただし C++是 ぜ 個 こ 著名 ちょめい 的 てき 例外 れいがい :请看下面 かめん 的 てき 代 だい 码。
#include <vector>
#include <string>
std :: vector < std :: vector < std :: string > > table1 ;
std :: vector < std :: vector < std :: string >> table2 ;
上面 うわつら 的 てき table1 显然是 ぜ 一 いち 个字 じ 符 ふ 串 くし 的 てき 二 に 维数 かず 组 ,而table2 则未必能通 どおり 过编译:如果严格遵循LR 分析 ぶんせき 过程,串 くし >> 会 かい 被 ひ 解 かい 释为右 みぎ 移 うつり 运算符 ふ 而非两个代表 だいひょう 模 も 板 ばん 参 さん 数 すう 表 ひょう 结束的 てき 右 みぎ 尖 とんが 括 くく 号 ごう ,因 いん 此出现编译错误,必须以table1 的 てき 方式 ほうしき 用 よう 空 そら 格 かく 区分 くぶん 。(在 ざい C++11发布之 の 后 きさき ,特 とく 别规定 てい 了 りょう 当 とう 处理模 も 板 ばん 时,>>被 ひ 优先视为两个>[ 28] ,所以 ゆえん table1和 わ table2均 ひとし 可 か 通 どおり 过编译.)
「在 ざい 這12年 ねん 裡 うら ,C++使用 しよう 者 しゃ 人數 にんずう 大約 たいやく 每 ごと 七 なな 個月 かげつ 半 はん 增加 ぞうか 一 いち 倍 ばい 」是 ぜ 許多 きょた C++相關 そうかん 文 ぶん 件 けん 必引的 てき 一段 いちだん 話 ばなし ;然 しか 而,時 じ 至 いたり 今日 きょう 新語 しんご 言 げん 層 そう 出 で 不 ふ 窮 きゅう ,使用 しよう 者 しゃ 人數 にんずう 已 やめ 不 ふ 太 ふと 可能 かのう 以如此速度 そくど 增長 ぞうちょう 。分析 ぶんせき 機構 きこう EvansData 定期 ていき 對 たい 開發 かいはつ 人員 じんいん 展開 てんかい 調 ちょう 查,其資料 しりょう 顯示 けんじ ,以C++為 ため 工具 こうぐ 的 てき 開發 かいはつ 人員 じんいん 在 ざい 整 せい 個 こ 開發 かいはつ 界 かい 所 しょ 佔的比例 ひれい 由 よし 1998年 ねん 春 はる 天 てん 的 てき 76%下降 かこう 至 いたり 2004年 ねん 秋 あき 的 てき 46%。
一部分 いちぶぶん Unix/C 程 ほど 序 じょ 员对C++语言深 ふか 恶痛绝,他 た 们批评的理由 りゆう 如下:
STL以非常 ひじょう 丑 うし 陋的方式 ほうしき 封 ふう 装 そう 了 りょう 各 かく 种数据 すえ 结构和算 わさん 法 ほう ,写 うつし 出来 でき 的 てき 代 だい 码难以理解 りかい 、不美 ふみ 观。
C++编译器 き 复杂和 わ 不可 ふか 靠 もたれ ,不 ふ 适合构建人命 じんめい 关天类型的 てき 程 ほど 序 じょ 。
Ian Joyner认为面 めん 向 こう 对象技 わざ 术徒增 ぞう 学 がく 习成本 ほん ,不 ふ 如面向 こう 过程的 てき C语言简单容易 ようい 使用 しよう ,尤 ゆう 其是在 ざい 系 けい 统软件 けん 的 てき 构建上 じょう [ 29] 。
概括 がいかつ 說 せつ 來 らい UNIX 程 ほど 式 しき 設計 せっけい 師 し 批評 ひひょう C++主要 しゅよう 是 ぜ 由 よし 於UNIX 社 しゃ 群 ぐん 與 あずか C++社 しゃ 群 ぐん 的 てき 文化 ぶんか 差異 さい [ 30] 。
Linux 之 これ 父 ちち 林 はやし 纳斯·托 たく 瓦 かわら 兹 曾经多 た 次 つぎ 炮轰C++。图灵奖 得 とく 主 ぬし 尼 あま 克 かつ 劳斯·维尔特 とく 也曾经批评C++语言太 ふとし 复杂、语法语义模糊 もこ ,是 ぜ “拙劣 せつれつ 工程 こうてい 学 がく ”的 てき 成果 せいか 。
事 こと 实上,对于C++语言的 てき 批评并不只来 ただらい 源 げん 于Unix/Unix-Like 系 けい 统下的 てき 程 ほど 序 じょ 员。就像C++语言本身 ほんみ 是 ぜ 一个跨平台的语言一样,对C++的 てき 批评并不局限 きょくげん 于Unix/Unix-Like 系 けい 统用户。
Josuttis, Nicolai M. The C++ Standard Library, A Tutorial and Reference Second. Addison-Wesley. 2012. ISBN 0-321-62321-5 .
Lippman, Stanley B.; Lajoie, Josée; Moo, Barbara E. C++ Primer Fifth. Addison-Wesley. 2011. ISBN 0-321-71411-3 .
[美 よし ] Stanley B. Lippman; [美 よし ] Josée Lajoie; [美 よし ] Barbara E. Moo. C++ Primer(中 ちゅう 文 ぶん 版 ばん )(第 だい 5版 はん ). 由 よし 王 おう 刚; 杨巨峰 ほう 翻 こぼし 译. 电子工 こう 业出版 しゅっぱん 社 しゃ . 2013-09-01. ISBN 9787121155352 (中 ちゅう 文 ぶん (中国 ちゅうごく 大 だい 陆)) .
Meyers, Scott. Effective C++ Third. Addison-Wesley. 2005. ISBN 0-321-33487-6 .
Meyers, Scott. Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library . Addison-Wesley. 2001.
Stroustrup, Bjarne . The C++ Programming Language Fourth ed. Addison-Wesley. 2013. ISBN 978-0-321-56384-2 .
Stroustrup, Bjarne . The Design and Evolution of C++ . Addison-Wesley. 1994. ISBN 0-201-54330-3 .
Stroustrup, Bjarne . Programming Principles and Practice Using C++ Second ed. Addison-Wesley. 2014. ISBN 978-0-321-99278-9 .
Vandevoorde, David; Josuttis, Nicolai M. C++ Templates: The complete Guide . Addison-Wesley. 2003. ISBN 0-201-73484-2 .