Visual C++ 2013入門經典(第7版) [Ivor Horton’s Beginning Visual C++ 2013]

Visual C++ 2013入門經典(第7版) [Ivor Horton’s Beginning Visual C++ 2013] pdf epub mobi txt 電子書 下載 2025

[美] 霍爾頓(Horton I.) 著,李周芳,江淩 譯
圖書標籤:
  • Visual C++
  • C++
  • Visual Studio
  • 編程入門
  • Windows 編程
  • 入門經典
  • Ivor Horton
  • 第7版
  • 開發工具
  • C++教程
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 清華大學齣版社
ISBN:9787302385059
版次:1
商品編碼:11611761
品牌:清華大學
包裝:平裝
叢書名: .NET開發經典名著
外文名稱:Ivor Horton’s Beginning Visual C++ 2013
開本:16開
齣版時間:2015-01-01
用紙:膠版紙
頁數:774

具體描述

産品特色

編輯推薦

  《Visual C++ 2012入門經典(第6版)》升級版本,第七版
  編程導師Ivor Horton經典作品,連續十五年
  作者經典作品包含:《C語言入門經典(第5版)》《 C++入門經典(第3版)》《Java 7入門經典》

Ivor Horton經典作品:

內容簡介

  著名編程圖書作傢Ivor Horton引導學習Visual C++ 2013這本C++語言暢銷書遵循Ivor Horton一貫的暢銷風格。Horton非常詳盡地介紹瞭標準C++語言和Visual C++。
  《Visual C++ 2013入門經典(第7版)》根據Visual C++ 2013進行瞭更新,展示瞭如何使用Visual C++建立實用的應用程序。閱讀本書不需要任何編程經驗。作者使用大量循序漸進的編程示例,引導讀者掌握C++開發的全部奧秘。
  《Visual C++ 2013入門經典(第7版)》特色
  ◆ 介紹C++編程的基本概念以及Visual C++開發環境的要點
  ◆ 從簡單的過程式程序開始解釋C++語言,逐步過渡到類和麵嚮對象編程
  ◆ 演示如何在各種環境下應用標準模闆庫(STL)
  ◆ 揭示每個Windows桌麵應用程序中的基本元素
  ◆ 展示如何使用MFC建立圖形用戶界麵以編寫Windows應用程序
  ◆ 通過一個在Windows 8下執行的遊戲示例,說明如何開發Windows Store應用程序

作者簡介

  Ivor Horton,是世界著名計算機圖書作傢,獨立顧問,幫助無數程序員步入編程殿堂。他曾在IBM工作多年,以優異成績擁有數學學士學位。他的資曆包括:使用大多數語言(如在多種機器上使用匯編語言和高級語言)進行編程,實時編程,設計和實現實時閉環工業控製係統。Horton擁有豐富的麵嚮工程師和科學傢的編程教學經驗(教學內容包括C、C++、Fortran、PL/1、APL等)。同時,他還是機械、加工和電子CAD係統、機械CAM係統和DNC/CNC係統方麵的專傢。

目錄

第1章 使用Visual C++編程 1
1.1 使用Visual C++學習 1
1.2 編寫C++應用程序 2
1.3 學習桌麵應用程序的編程 2
1.3.1 學習C++ 3
1.3.2 C++概念 3
1.3.3 控製颱應用程序 4
1.3.4 Windows編程概念 4
1.4 集成開發環境簡介 6
1.4.1 編輯器 6
1.4.2 編譯器 6
1.4.3 鏈接器 6
1.4.4 庫 7
1.4.5 標準C++庫 7
1.4.6 Microsoft庫 7
1.5 使用IDE 7
1.5.1 工具欄選項 8
1.5.2 可停靠的工具欄 9
1.5.3 文檔 9
1.5.4 項目和解決方案 9
1.5.5 設置Visual C++的選項 16
1.5.6 創建和執行Windows應用程序 17
1.6 小結 19
1.7 本章主要內容 19

第2章 數據、變量和計算 21
2.1 C++程序結構 21
2.1.1 main()函數 28
2.1.2 程序語句 28
2.1.3 空白 30
2.1.4 語句塊 30
2.1.5 自動生成的控製颱程序 30
2.2 定義變量 32
2.2.1 命名變量 32
2.2.2 關鍵字 32
2.2.3 聲明變量 33
2.2.4 變量的初始值 33
2.3 基本數據類型 34
2.3.1 整型變量 34
2.3.2 字符數據類型 35
2.3.3 整型修飾符 36
2.3.4 布爾類型 36
2.3.5 浮點類型 37
2.3.6 C++中的基本類型 37
2.3.7 字麵值 38
2.3.8 定義類型的彆名 39
2.4 基本的輸入/輸齣操作 40
2.4.1 從鍵盤輸入 40
2.4.2 到命令行的輸齣 40
2.4.3 格式化輸齣 41
2.4.4 轉義序列 42
2.5 C++中的計算 44
2.5.1 賦值語句 44
2.5.2 算術運算 44
2.5.3 計算餘數 49
2.5.4 修改變量 49
2.5.5 增量和減量運算符 50
2.5.6 計算的順序 52
2.6 類型轉換和類型強製轉換 53
2.6.1 賦值語句中的類型轉換 54
2.6.2 顯式類型轉換 54
2.6.3 老式的類型強製轉換 55
2.7 auto關鍵字 55
2.8 類型的確定 56
2.9 按位運算符 56
2.9.1 按位AND運算符 57
2.9.2 按位OR運算符 58
2.9.3 按位XOR運算符 59
2.9.4 按位NOT運算符 60
2.9.5 移位運算符 60
2.10 lvalue和rvalue 61
2.11 瞭解存儲時間和作用域 62
2.11.1 自動變量 62
2.11.2 決定變量聲明的位置 65
2.11.3 全局變量 65
2.11.4 靜態變量 68
2.12 具有特定值集的變量 68
2.12.1 舊枚舉 68
2.12.2 類型安全的枚舉 70
2.13 名稱空間 72
2.13.1 聲明名稱空間 73
2.13.2 多個名稱空間 74
2.14 小結 75
2.15 練習 75
2.16 本章主要內容 76

第3章 判斷和循環 79
3.1 比較數據值 79
3.1.1 if語句 80
3.1.2 嵌套的if語句 81
3.1.3 嵌套的if-else語句 85
3.1.4 邏輯運算符和錶達式 87
3.1.5 條件運算符 89
3.1.6 switch語句 91
3.1.7 無條件轉移 94
3.2 重復執行語句塊 95
3.2.1 循環的概念 95
3.2.2 for循環的變體 98
3.2.3 while循環 105
3.2.4 do-while循環 107
3.2.5 基於範圍的循環 108
3.2.6 嵌套的循環 108
3.3 小結 111
3.4 練習 111
3.5 本章主要內容 111

第4章 數組、字符串和指針 113
4.1 處理多個相同類型的數據值 113
4.1.1 數組 114
4.1.2 聲明數組 114
4.1.3 初始化數組 117
4.1.4 使用基於範圍的for循環 118
4.1.5 多維數組 119
4.2 處理C樣式的字符串 123
4.2.1 字符串輸入 124
4.2.2 字符串字麵量 125
4.2.3 給字符串使用基於範圍的for循環 126
4.3 間接數據訪問 128
4.3.1 指針的概念 128
4.3.2 聲明指針 128
4.3.3 使用指針 129
4.3.4 初始化指針 130
4.3.5 指嚮char類型的指針 132
4.3.6 sizeof操作符 136
4.3.7 常量指針和指嚮常量的指針 136
4.3.8 指針和數組 138
4.4 動態內存分配 144
4.4.1 堆的彆名—— 空閑存儲器 144
4.4.2 new和delete操作符 145
4.4.3 為數組動態分配內存 146
4.4.4 多維數組的動態分配 148
4.5 使用引用 149
4.5.1 引用的概念 149
4.5.2 聲明並初始化lvalue引用 149
4.5.3 在基於範圍的for循環中
使用引用 150
4.5.4 創建rvalue引用 151
4.6 字符串的庫函數 151
4.6.1 確定以空字符結尾的字符串的長度 152
4.6.2 連接以空字符結尾的字符串 152
4.6.3 復製以空字符結尾的字符串 153
4.6.4 比較以空字符結尾的字符串 154
4.6.5 搜索以空字符結尾的字符串 154
4.7 小結 156
4.8 練習 156
4.9 本章主要內容 157

第5章 程序結構(1) 159
5.1 理解函數 159
5.1.1 需要函數的原因 160
5.1.2 函數的結構 161
5.1.3 替代的函數語法 163
5.1.4 使用函數 163
5.2 給函數傳遞實參 166
5.2.1 按值傳遞機製 167
5.2.2 給函數傳遞指針實參 168
5.2.3 給函數傳遞數組 169
5.2.4 給函數傳遞引用實參 173
5.2.5 使用const修飾符 175
5.2.6 rvalue引用形參 176
5.2.7 main()函數的實參 178
5.2.8 接受數量不定的函數實參 179
5.3 從函數返迴值 181
5.3.1 返迴指針 181
5.3.2 返迴引用 184
5.3.3 函數中的靜態變量 186
5.4 遞歸函數調用 188
5.5 小結 191
5.6 練習 191
5.7 本章主要內容 192

第6章 程序結構(2) 193
6.1 函數指針 193
6.1.1 聲明函數指針 194
6.1.2 函數指針作為實參 196
6.1.3 函數指針的數組 198
6.2 初始化函數形參 198
6.3 異常 200
6.3.1 拋齣異常 202
6.3.2 捕獲異常 202
6.3.3 重新拋齣異常 204
6.3.4 MFC中的異常處理 204
6.4 處理內存分配錯誤 205
6.5 函數重載 206
6.5.1 函數重載的概念 207
6.5.2 引用類型和重載選擇 209
6.5.3 何時重載函數 210
6.6 函數模闆 210
6.7 使用decltype操作符 212
6.8 使用函數的示例 215
6.8.1 實現計算器 215
6.8.2 從字符串中刪除空格 217
6.8.3 計算錶達式的值 218
6.8.4 獲得項值 220
6.8.5 分析數 221
6.8.6 整閤程序 224
6.8.7 擴展程序 225
6.8.8 提取子字符串 227
6.8.9 運行修改過的程序 229
6.9 小結 229
6.10 練習 229
6.11 本章主要內容 230

第7章 自定義數據類型 233
7.1 C++中的結構 233
7.1.1 結構的概念 234
7.1.2 定義結構 234
7.1.3 初始化結構 234
7.1.4 訪問結構的成員 235
7.1.5 伴隨結構的智能感知幫助 238
7.1.6 RECT結構 239
7.1.7 使用指針處理結構 240
7.2 數據類型、對象、類和實例 241
7.2.1 類的起源 243
7.2.2 類的操作 243
7.2.3 術語 244
7.3 理解類 244
7.3.1 定義類 244
7.3.2 聲明類的對象 245
7.3.3 訪問類的數據成員 245
7.3.4 對象成員的初始化 247
7.3.5 初始化類成員 248
7.3.6 類的成員函數 248
7.3.7 在類的外部定義成員函數 250
7.3.8 內聯函數 251
7.4 類構造函數 252
7.4.1 構造函數的概念 252
7.4.2 默認的構造函數 254
7.4.3 默認的形參值 256
7.4.4 在構造函數中使用初始化列錶 258
7.4.5 聲明顯式的構造函數 259
7.4.6 委托構造函數 260
7.5 類的私有成員 260
7.5.1 訪問私有類成員 263
7.5.2 類的友元函數 263
7.5.3 默認復製構造函數 266
7.6 this指針 267
7.7 類的const對象 269
7.7.1 類的const成員函數 270
7.7.2 類外部的成員函數定義 271
7.8 類對象的數組 271
7.9 類的靜態成員 273
7.9.1 類的靜態數據成員 273
7.9.2 類的靜態函數成員 276
7.10 類對象的指針和引用 277
7.10.1 類對象的指針 277
7.10.2 類對象的引用 279
7.11 小結 280
7.12 練習 280
7.13 本章主要內容 281

第8章 深入理解類 283
8.1 類析構函數 283
8.1.1 析構函數的概念 284
8.1.2 默認的析構函數 284
8.1.3 析構函數與動態內存分配 286
8.2 實現復製構造函數 289
8.3 運算符重載 291
8.3.1 實現重載的運算符 291

精彩書摘

  2. #include指令—— 頭文件
  在注釋之後有一個#include指令:
  #include
  之所以稱其為指令,是因為它命令編譯器完成某項任務—— 此處是在編譯之前,在此程序的源文件中插入文件iostream的內容,該文件名位於尖括號之間。iostream文件稱為頭文件,因為它總是插入到另一個源文件中。iostream頭文件是標準C++庫的一部分,它包含一些使用輸入和輸齣語句所需的定義。如果沒有在此程序中包括iostream的內容,那麼不能編譯這個程序,因為在這個程序中使用的輸齣語句依賴該文件中的一些定義。Visual C++提供瞭許多不同的標準頭文件,它們具有各種各樣的功能。在進一步學習語言工具時,將看到更多的頭文件。
  由#include指令插入的文件的名稱不一定寫在尖括號之間。頭文件名也可以寫在雙引號中。因此上麵的代碼也可以寫成:
  #include "iostream"
  兩者之間的唯一區彆是編譯器將在什麼地方查找此文件。如果頭文件名是用雙引號引起來的,則編譯器先在包含此指令的源文件所在的目錄中搜索頭文件。如果頭文件未找到,編譯器再搜索存儲標準頭文件的目錄。
  如果文件名是用尖括號括起來的,則編譯器隻搜索包含標準頭文件的目錄。因此,想在源文件中包含標準頭文件時,應該將文件名用尖括號括起來,因為這樣的搜索速度更快。而要包含其他頭文件,一般是自己創建的頭文件,則應該將文件名用雙引號引起來;否則,根本找不到。
  #include語句是幾個預處理器指令中的一個,本書後麵將介紹其他預處理指令。編輯器會在編輯窗口中用藍色突齣顯示它們。預處理器指令是由編譯的預處理階段執行的命令,這個階段在代碼編譯成目標代碼之前執行,在編譯源代碼之前,預處理器指令通常以某種方式作用於它們。預處理器指令都以#字符開頭。
  3. 名稱空間和using聲明
  如第1章所述,標準庫是一個大型的例程集閤,用於執行許多常見的任務,如處理輸入和輸齣,以及執行基本的數學計算。由於標準庫中的這些例程以及其他具有名稱的事物數量巨大,因此用戶使用的名稱可能無意中與標準庫中的名稱雷同。名稱空間是一種機製,它可以將無意中使用重名的風險降至最低,其方法是將一組給定的名稱(如標準庫中的名稱)與一種姓(family name)關聯起來,這種姓就是名稱空間名稱。
  在名稱空間的代碼中定義的每個名稱都有一個關聯的名稱空間名稱。標準庫工具定義在std名稱空間內,所以標準庫中的每一項都有自己的名稱,以及作為限定符的名稱空間名稱std。標準庫中cout和endl的全名是std::cout和std::endl,第1章介紹過這些名稱。將名稱空間名稱和實體名分隔開的兩個冒號構成瞭稱為“作用域解析運算符”的運算符,本書後麵將介紹這種運算符的其他用途。在程序中使用全名會使代碼看起來有點混亂,所以最好使用不由名稱空間名稱std限定的簡化名。在前麵的程序中,iostream的#include指令後麵的兩行代碼使之得以實現:
  using std::cout;
  using std::endl;
  這些是using聲明,它們告訴編譯器,要在不指定名稱空間名稱的情況下使用名稱空間std中的名稱cout和endl。編譯器假定,在第一個using聲明之後,隻要使用名稱cout,就錶示std::cout。名稱cout錶示對應於命令行的標準輸齣流,名稱endl錶示換行符,並刷新輸齣緩存。本章後麵會詳細介紹名稱空間,包括如何自定義名稱空間。
  2.1.1 main()函數
  上述示例中的函數main()包括將它定義為main()的函數頭,以及從第一個左大括號({)到對應的右大括號(})之間的所有語句。這對括號將這個函數中的可執行語句包圍起來,它們總稱為函數體。
  所有函數都包括一個定義函數名稱的頭,然後是函數體,它由包括在大括號之間的一些程序語句組成。函數體也可以不包含任何語句,這時它不做任何事情。
  不做任何事情的函數似乎有些多餘,但是在編寫大程序時,一開始可以先勾畫齣函數中的完整程序結構,而忽略許多函數的代碼,使它們有一個空的或者最小的函數體。這意味著,可以隨時編譯和執行包含所有函數的整個程序,並逐步給函數添加詳細的代碼。
  2.1.2 程序語句
  main()函數體的每個程序語句都以一個分號結束。分號錶示語句的結束,而不是這一行的結束。因此,為瞭使代碼更易於理解,可以把一個語句擴展成幾行,也可以把幾個語句放在同一行中。程序語句是定義程序功能的基本單元。這有點像文章中一個段落的句子,每個句子都獨立地錶達一個行為或想法,和這個段落中的其他句子聯係和組閤起來,就錶達齣比較全麵的想法。一個語句就是計算機將要執行的一個行為的自包含定義,和其他語句組閤起來, 就可以定義比較復雜的行為或計算。
  函數的行為始終由一些語句來錶達,每個語句都以分號結束。看看剛纔編寫的示例中的語句,大緻瞭解它是如何運行的。本章後麵將討論每種類型的語句。
  在main()函數體中,第一個語句是:
  int apples, oranges; // Declare two integer variables
  這個語句定義瞭兩個變量apples和oranges。變量是一段已命名的計算機內存,用於存儲數據,引入一個或多個變量名稱的語句稱為變量聲明。關鍵字int錶明apples和oranges變量將存儲整數值。每當把一個變量的名稱引入程序時,都要指定它將存儲的數據類型,這稱為變量的類型。
  接下來的這個語句聲明瞭另一個整型變量fruit:
  int fruit; // ...then another one
  雖然可以在同一個語句中聲明幾個變量,如同前麵的語句聲明apples和oranges那樣。但是,一般最好用一個語句聲明一個變量,獨占一行,這樣就可以單獨注釋,以解釋它們的用途。
  示例中的下一行代碼是:
  apples = 5; oranges = 6; // Set initial values
  這行代碼包含兩個語句,每個語句都以一個分號結束。這樣做的目的是說明可以把多個語句放在一行中。這不是強製的,但良好的編程習慣一般是一行隻編寫一個語句,使代碼較容易理解。良好的編程習慣是采用使代碼易於理解、且使齣錯的可能性降至最低的編碼方法。
  這兩個語句分彆將數值5和6存儲到變量apples和oranges中。這些語句稱為賦值語句,因為它們把新值賦給變量,=是賦值運算符。
  下一個語句是:
  fruit = apples + oranges; // Get the total fruit
  這也是一個賦值語句,但稍有不同,因為在賦值運算符的右邊是一個算術錶達式。這個語句把存儲在變量apples和oranges中的數值相加,然後在變量fruit中存儲結果。
  下麵的3個語句是:
  cout << endl; // Start output on a new line
  cout << "Oranges are not the only fruit... " << endl
  << "- and we have " << fruit << " fruits in all.";
  cout << endl; // Output a new line character
  它們都是輸齣語句。第一個語句把由endl錶示的換行符發送到屏幕的命令行中。在C++中,輸入的來源或輸齣的目的地稱為流。名稱cout指定“標準的”輸齣流,運算符<<錶明,該運算符右邊的內容將發送到輸齣流cout。<<運算符“指齣”數據流動的方嚮,從這個運算符右邊的變量、字符串或錶達式到左邊的輸齣目的地。因此,在第一個語句中,由名稱endl錶示的值(即換行符)將發送到由名稱cout標識的流—— 傳輸到cout的數據會寫入命令行。把endl發送到流,也會刷新流緩存,然後把所有輸齣發送到命令行。
  名稱cout和運算符<<的含義定義在頭文件iostream中,該文件利用#include指令在程序代碼中添加。cout是標準庫中的名稱,所以它在名稱空間std內。如果不使用using指令,就不會識彆cout,除非使用瞭其全限定名std::cout。cout定義為錶示標準輸齣流,因此不應當把它用於其他目的,將相同的名稱用於不同的事情很可能引起混淆。
  第2個輸齣語句擴展成如下兩行:
  cout << "Oranges are not the only fruit... " << endl
  << "- and we have " << fruit << " fruits in all.";
  如前所述,每個語句都可以擴展成許多行。語句的結束始終用分號錶示,而不是一行的結束。編譯器將讀取連續的行,並把它們組閤成一個語句,直至發現定義該語句結束的分號。當然,這也意味著,如果忘記在語句的結尾處放置分號,那麼編譯器將假定下一行是同一語句的一部分,並將它們連接到一起。這通常會産生編譯器無法理解的東西,所以您將得到一個錯誤消息。
  這個語句將文本字符串"Oranges are not the only fruit…"發送到命令行,後跟另一個換行符(endl),然後是另一個文本字符串"- and we have ",接著是存儲在變量fruit中的值,最後是另一個文本字符串"fruits in all."。可以按照這種方法把想輸齣的一係列內容串起來。這個語句從左嚮右執行,每一項都依次發送到cout。注意,發送到cout的每一項的前麵都有自己的<<運算符。
  第三個也就是最後一個輸齣語句把另一個換行符發送到屏幕,這3個語句將生成前述的輸齣。這個程序中的最後一個語句是:
  return 0; // Exit the program
  它將終止main()函數的執行,從而停止這個程序的執行。控製權返迴到操作係統,返迴的代碼0告訴操作係統:應用程序成功終止。忽略main()的return語句,程序應能編譯並執行。本章的後麵將詳細地討論所有這些語句。
  程序中的語句按照編寫它們的順序執行,除非一個語句明確改變瞭這個自然順序。第3章將討論改變執行順序的語句。
  2.1.3 空白
  空白包含空格、製錶符、換行符、換頁符和注釋的任意序列。空白將語句的各個部分分隔開,從而使編譯器能夠識彆語句中的一個元素(如int)在何處結束,下一個元素在何處開始。否則,將忽略空白,且不會産生任何影響。
  以下麵的語句為例:
  int fruit; // ...then another one
  為瞭使編譯器能夠區分int和fruit,它們之間至少有一個空白字符,但是如果添加更多的空白字符,它們將被忽略。這一行分號後麵的內容全部是空白,所以都被忽略。
  另一方麵,下麵的語句:
  fruit = apples + oranges; // Get the total fruit
  fruit和=之間,=和apples之間不需要空白字符,但也可以添加一些空白字符。這是因為=不是字母或數字字符,所以編譯器可以將它與其周圍的內容區分開。類似地,符號+的兩邊也不需要有空白字符,但是也可以添加一些。
  除瞭在語句元素之間用作分隔符的空白之外,編譯器將忽略其他空白(當然,在雙引號之間的一串字符中使用的空白除外)。可以添加一些空白,使程序更具可讀性,記住,每當齣現分號時,語句就結束。
  2.1.4 語句塊
  可以把幾個語句括在一對大括號中,這時它們就變成瞭塊或復閤語句。函數體就是塊的一個示例。可以把這樣的復閤語句看成單個語句(在第3章討論判斷語句時,將看到這種情況)。隻要是可以放單個語句的地方,都可以放置一個用大括號括起來的語句塊。因此,塊可以置入其他塊中。實際上,塊可以嵌套(一個塊在另一個塊內)至任意深度。
  2.1.5 自動生成的控製颱程序
  上一個示例生成瞭一個沒有源文件的空項目,然後添加瞭源文件。如果允許Application Wizard生成這個項目,如第1章所述,則這個項目將包含幾個文件,下麵深入分析它們的內容。創建一個新的Win32控製颱項目Ex2_01A,這次允許Application Wizard完成這個項目,而不在Application Settings對話框中設置任何選項。這個項目有4個包含代碼的文件:Ex2_01A.cpp和stdafx.cpp源文件、stdafx.h頭文件以及targetver.h文件,其中targetver.h文件指定能運行應用程序的Windows的最早版本。這錶示一個不執行任何任務的有效程序。從主菜單上選擇File | Close Solution菜單項,可以關閉打開的項目。在現有項目打開的情況下,可以創建一個新項目,這時將自動關閉舊項目,除非選擇在相同的解決方案中添加它。
  Ex2_01A.cpp的內容是:
  // Ex2_01A.cpp : Defines the entry point for the console application.
  //
  #include "stdafx.h"
  int _tmain(int argc, _TCHAR* argv[])
  {
  return 0;
  }
  這確實和前一個示例不同。其中有一個用於stdafx.h頭文件的#include指令,和程序執行的起始函數_tmain(),而不是main()。第5章將介紹函數頭中圓括號的內容。
  1. 預編譯的頭文件
  Application Wizard生成的stdafx.h頭文件是該項目的一部分,觀察一下其中的代碼,將看到還有3個#include指令,分彆用於前麵提到的targetver.h頭文件,以及標準庫頭文件stdio.h和tchar.h。stdio.h是用於標準I/O的老式頭文件,在C++當前的標準齣颱之前使用,它的功能和iostream頭文件類似,但沒有定義相同的名稱。這個控製颱示例使用iostream符號,所以需要包含它。tchar.h是Microsoft特有的頭文件,它定義文本函數。
  stdafx.h僅在修改代碼時編譯,而不是在每次編譯程序時重新編譯它。編譯stdafx.h會得到一個.pch文件(預編譯的頭文件),隻有沒有對應的.pch文件,或者.pch文件的時間戳比stdafx.h文件的時間戳早,編譯器纔重新編譯stdafx.h。一些標準庫頭文件非常大,所以這個功能可以顯著減少編譯項目所需的時間。如果僅在Ex2_01A.cpp中給iostream包含#include指令,則每次編譯程序時,都重新編譯它。如果把它放在stdafx.h中,iostream就隻編譯一次。因此,stdafx.h應包含不常修改的所有頭文件的#include指令。這包括項目的標準頭文件和很少修改的所有自定義項目頭文件。在學習C++時,不會使用齣現在stdafx.h中的這兩種頭文件。
  2. Main函數名
  如前所述,在編寫使用Unicode字符的程序時,Visual C++支持wmain()作為main()的替代函數, wmain()是main()的Microsoft特有定義,不是標準C++的一部分。tchar.h頭文件定義瞭名稱_tmain,它一般由main取代,但是如果定義瞭符號_UNICODE,它就由wmain取代。為瞭把程序標識為使用Unicode,需要在stdafx.h頭文件的開始處添加下列語句:
  #define _UNICODE
  #define UNICODE
  為什麼需要兩個語句?定義符號_UNICODE,會讓Windows頭文件假定,Unicode字符是默認的。定義_UNICODE會給C++標準庫附帶的C例程頭文件帶來相同的效果。Ex2_01A項目並不需要這麼做,因為Character Set項目屬性默認設置為使用Unicode字符。前麵詳細解釋瞭main()函數,C++控製颱示例堅持使用普通但成熟的main()函數,它是標準C++函數,因此是可移植性最好的編碼方法。
  2.2 定義變量
  在所有的計算機程序中,一個基本的目標是操作數據,獲得結果。這個過程中的一個基本元素是獲得一段內存,可以稱其為自己的內存,使用一個有意義的名稱引用它,並在其中存儲一條數據。所指定的每段內存都稱為一個變量。
  我們知道,每種變量都存儲一種特定的數據,在定義瞭變量後,它可以存儲的數據類型就是固定的。儲整數的變量,就不能存儲小數。變量在某一時刻包含的值由程序中的語句確定,隨著程序計算的進展,它的值通常多次改變。
  2.2.1 命名變量
  變量的名稱(其實是C++中所有事物的名稱)可以是任意字母和數字的序列,其中下劃綫_算作字母,其他字符則不允許使用,如果在名稱中使用瞭一些其他字符,編譯程序時就會得到一個錯誤消息。名稱必須以字母或下劃綫開頭,通常錶明所存儲的信息的種類。名稱也稱為標識符。
  在Visual C++中,變量名最長可以有2048個字符,因此給變量命名有相當大的靈活性。如果使用長名稱會使程序難以閱讀,除非鍵盤技巧很高,否則長名稱很難輸入。更嚴重的問題是,並非所有編譯器都支持這麼長的名稱。事實上,很少需要使用10或15個字符以上的名稱。
  最好避免使用以下劃綫開頭、且包含大寫字母的名稱,如_Upper和_Lower,因為它們可能與相同形式的標準庫名稱發生衝突。由於同樣的原因,還應當避免使用以雙下劃綫開頭的名稱。
  下麵是一些有效的變量名:
  price discount pShape value_ COUNT
  five NaCl sodiumChloride tax_rate
  涉及兩個或多個單詞的有意義的名稱可以用各種方式構建:第二個單詞和以後各單詞的首字母大寫,或者在各單詞之間插入下劃綫。前麵列錶裏有一些示例。本書的代碼中給名稱使用各種樣式,但最好在一個程序中隻使用一種樣式。
  8_Ball、7Up和6_pack不是閤法的名稱。Hash!或Mary-Ann也不是閤法的名稱。最後這個示例是一個很常見的錯誤,但帶有下劃綫的Mary_Ann是閤法的。當然,Mary Ann不是閤法的名稱,因為變量名不允許有空白。名稱republican和Republican是不同的,因為名稱是區分大小寫的。一個常見的約定是類名以大寫字母開頭,變量名以小寫字母開頭,參見第8章。
  ……

前言/序言

  歡迎使用本書。通過學習本書,你可以使用Microsoft公司最新的應用程序開發係統Visual Studio 2013,成為優秀的C++程序員。本書旨在講述C++程序設計語言,然後講述如何運用C++語言開發自己的Windows應用程序。在此過程中,讀者將瞭解這一最新Visual C++版本所提供的很多激動人心的新功能。
  Visual C++ 2013是Microsoft開發環境Visual Studio Professional 2013的所有版本的一部分,本書提到Visual C++時,都是指Visual Studio Professional 2013包含的Visual C++ 2013功能。注意Visual Studio Express 2013版本沒有提供本書的全部功能。第11到18章的示例不能用Visual Studio Express 2013創建。
  0.1 本書讀者對象
  本書針對任何想要學習如何使用Visual C++編寫在Microsoft Windows操作係統下運行的C++應用程序的讀者。閱讀本書不需要預先具備任何特定編程語言的知識。如果屬於下列3種情形之一,你就適閤學習本教程:
  ●  屬於編程新手,十分渴望投入編程世界,並最終掌握C++。要取得成功,你至少需要對計算機的工作原理有大體的理解。
  ●  具備一些其他語言的編程經驗,如BASIC;渴望學習C++,並想提升實際的Microsoft Windows編程技能。
  ●  有一些使用C語言或C++語言的經驗,但使用環境不是Microsoft Windows;希望使用最新的工具和技術,擴展在Windows環境下編程的技能。
  0.2 本書主要內容
  本書的第一部分通過一個詳細的循序漸進式教程,講授瞭使用Visual Studio Professional 2013編寫C++程序的基礎知識。你將瞭解C++語言的語法和用法,並通過有效的示例,獲得實際運用它的經驗和信心,示例代碼演示瞭C++的幾乎所有方麵。本書也提供瞭一些練習,可以檢驗所學的知識,並且可以下載練習題答案。
  本語言教程也介紹和說明瞭C++標準庫功能的用法,因為開發程序時極有可能使用它們。隨著深入地學習C++語言,你的標準庫知識會不斷增加。還將學習標準模闆庫(Standard Template Library,STL)提供的強大工具。
  對C++的運用有信心之後,就可以繼續學習Windows編程瞭。通過創建超過2000行代碼的大型可運行的應用程序,學習如何使用MFC來開發Windows桌麵應用程序。開發此應用程序貫穿多章內容,用到瞭MFC提供的一係列用戶界麵功能。還要學習如何編寫麵嚮平闆電腦、運行Windows 8的應用程序,通過循序漸進地開發一個有效的遊戲示例,來學習如何創建帶有Windows 8現代界麵的應用程序。
  0.3 本書結構
  本書內容的結構安排如下:
  ●  第1章介紹使用C++編寫程序所需要理解的基本概念,以及在Visual C++開發環境中體現的主要思想,還敘述瞭如何使用Visual C++的功能來創建本書其餘部分要學習的各種C++應用程序。
  ●  第2~9章講授C++語言。首先是簡單的過程式程序示例,然後學習類和麵嚮對象的編程。
  ●  第10章介紹如何使用標準模闆庫(Standard Template Library,STL)。STL是一組功能強大且全麵的工具,用來組織和操作C++程序中的數據。由於STL是獨立於應用程序的,因此可以在上下文中大量應用它。
  ●  第11章討論Microsoft Windows桌麵應用程序的組織方式,並描述和展示瞭在所有為Windows操作係統編寫的桌麵應用程序中都存在的基本元素。本章通過基礎示例解釋瞭Windows應用程序的工作原理,還將創建使用C++語言、Windows API和MFC的程序。
  ●  第12~17章講述Windows桌麵應用程序的編程。詳細描述瞭如何使用MFC提供的構建GUI的功能編寫C++ Windows應用程序。我們將學習如何創建並使用通用控件來構建應用程序的圖形用戶界麵,還將學習如何處理因用戶與程序的交互作用而産生的事件。除瞭學習構建GUI的技術以外,還將從開發該應用程序的過程中學到如何打印文檔,以及應用程序如何處理文件。
  ●  第18章講述為Windows 8編寫應用程序的基本概念,開發一個使用Windows 8現代用戶界麵的完整、有效的應用程序。
  本書各章內容都包括許多工作示例,通過這些示例闡明所討論的編程技術。每章結束時都總結瞭該章所講述的要點,大多數章節都在最後給齣瞭一組練習,可以應用所學的技術來試著解答這些練習。練習的答案連同書中的所有代碼都可以從Wrox齣版社的網站上下載。
  0.4 使用本書的前提
  Visual Studio 2013有幾個版本,它們都有不同的功能。本書假定你安裝瞭Visual Studio Professional 2013(或更高版本)。換言之,隻要安裝付費的Visual Studio 2013版本即可。如果你是全日製學生,則可以使用低成本的學生版本。隻安裝免費的Express版本是不夠的。
  如果安裝瞭Visual Studio和Windows 7或Windows 8,就可以使用第1~17章的使用示例和練習,要使用第18章的示例,Visual Studio的版本必須安裝在Windows 8環境下。
  第2~10章的示例可以使用Windows桌麵的Visual Studio Express 2013創建和執行,但第11~18章的示例不行。
  0.5 源代碼
  讀者在閱讀本書提供的代碼時,既可以親自輸入所有代碼,也可以使用隨書提供的代碼文件。本書所有代碼均可以從http://www.wrox.com/或http://www.tupwk.com.cn/downpage網站下載。進入該網站後,讀者可以根據本書的書名查找本書(既可以使用搜索框,也可以使用書名列錶進行查找),然後單擊本書詳細內容頁麵上提供的Download Code鏈接,就可以下載本書提供的所有代碼。
  注意:
  由於許多書籍名稱與本書類似,讀者也可以通過ISBN進行查找,本書的ISBN為:978-1-118-84571-4。
  另外,讀者可以從前麵提到的CodePlex網站下載本書或其他Wrox書籍的代碼,也可以從Wrox的代碼下載頁麵http://www.wrox.com/dynamic/books/download.aspx和http://www. tupwk.com.cn/downpage下載本書或其他Wrox書籍的代碼。
  0.6 練習
  許多章節都有一組練習用於檢驗你所學的知識。盡量完成所有的練習。如果有問題,可以從http://www.wrox.com/go/beginingvisualc上下載練習題的答案。
  0.7 勘誤錶
  為瞭避免本書文字和代碼中存在錯誤,我們已經竭盡全力。然而,世界上並不存在完美無缺的事物,所以本書可能仍然存在錯誤。如果讀者在我們編寫的某本書籍中發現瞭諸如拼寫錯誤或代碼缺陷等問題,那麼請告訴我們,我們對此錶示感謝。利用勘誤錶反饋錯誤信息,可以為其他讀者節省大量時間,同時,我們也能夠受益於讀者的幫助,這樣有助於我們編寫齣質量更高的專業著作。
  如果讀者需要參考本書的勘誤錶,請在網站http://www.wrox.com中用搜索框或書名列錶查找本書書名。然後,在本書的詳細內容頁麵上,單擊Book Errata鏈接。在隨後顯示的頁麵中,讀者可以看到與本書相關的所有勘誤信息,這些信息是由讀者提交、並由Wrox的編輯們加上的。通過訪問http://www.wrox.com/misc-pages/booklist.shtml,讀者還可以看到Wrox齣版的所有書籍的勘誤錶。
  如果讀者沒有在Book Errata頁麵上找到自己發現的錯誤,那麼請轉到頁麵http://www. wrox.com/contact/techsupport.shtml,針對你所發現的每一項錯誤填寫錶格,並將錶格發給我們,我們將對錶格內容進行認真審查,如果確實是我們書中的錯誤,我們將在該書的Book Errata頁麵上標明該錯誤信息,並在該書的後續版本中改正。
  0.8 關於p2p.wrox.com論壇
  如果讀者希望能夠與作者進行討論,或希望能夠參與到讀者的共同討論中,那麼請加入p2p.wrox.com論壇。該論壇是一個基於Web的係統,讀者可以在論壇發錶與Wrox齣版的書籍及相關技術的信息,並與其他讀者和技術用戶進行討論。論壇提供瞭訂閱功能,可以將與讀者所選定主題相關的新帖子定期發送到讀者的電子郵箱。Wrox的作者、編輯、業界專傢,以及其他讀者都會參與論壇中的討論。
  讀者可以在http://p2p.wrox.com參與多個論壇的討論,這些論壇不僅能夠幫助讀者更好地理解本書,還有助於讀者更好地開發應用程序。如果讀者希望加入論壇,那麼請按照以下步驟執行:
  (1) 進入http://p2p.wrox.com頁麵,單擊Register鏈接。
  (2) 閱讀使用條款,然後單擊Agree按鈕。
  (3) 填寫必要的信息及可選信息,然後單擊Submit按鈕。
  (4) 隨後讀者會收到一封電子郵件,郵件中說明瞭如何驗證賬戶並完成整個加入過程。
  讀者無須加入P2P論壇即可閱讀論壇消息,但如果需要發錶主題或發錶迴復,那麼必須加入論壇。
  成功加入論壇後,讀者就可以發錶新主題瞭。此時,讀者還可以迴復其他用戶發錶的主題。讀者在任何時間都可以閱讀論壇信息,如果需要論壇將新的信息發送到自己的電子郵箱,那麼可以單擊論壇列錶中論壇名稱旁的Subscribe to this Forum圖標完成這項功能設置。
  如果讀者需要獲得更多與Wrox P2P相關的信息,請閱讀P2P FAQs,這樣可以獲得大量與P2P和Wrox齣版的書籍相關的具體信息。閱讀FAQs時,請單擊P2P頁麵上的FAQs鏈接。

用戶評價

評分

一本不錯的書,內容還不知道

評分

包裝一貫很好,發票字跡不清,客服正在解決中。好書一本,值得珍藏。

評分

書很好,正版。書的內容講的很詳細,容易理解,值得購買。

評分

很好,東西質量不錯,很好用,大傢都很喜歡,已經買瞭很多瞭,這次價格也實惠,送貨速度快。。。。。。。。。。。。。。。。。。。。。。。。。。。。

評分

評分

專業書,為瞭多瞭解,多學習而買的。

評分

京東上買書還是比較靠譜的。

評分

測試2假貨高仿水貨山寨是否是敏感詞

評分

太厚瞭,慢慢看

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有