visual studio 2008 開發c++學習(一):參考網上材料

pengfoo發表於2011-11-26
 

使用專案和解決方案

用 Visual Studio 編寫 Visual C++ 程式的第一步是選擇專案的型別。對於每種專案型別,Visual Studio 都為您設定編譯器設定並生成起始程式碼。

 

建立新專案

在“檔案”選單中,指向“新建”,然後單擊“專案...”。

 

在“專案型別”區域中,單擊“Win32”。然後,在“Visual Studio 已安裝的模板”窗格中,單擊“Win32 控制檯應用程式”。

 

鍵入專案名稱。在此示例中,我們將使用“遊戲”。

 

建立新專案時,Visual Studio 將該專案放入一個解決方案。請接受解決方案的預設名稱,該名稱與專案的名稱相同。

 

您可以接受預設位置、鍵入一個不同的位置或者瀏覽到要儲存專案的目錄。

 

按“確定”啟動“Win32 應用程式嚮導”。

 

在“Win32 應用程式嚮導”對話方塊的“概述”頁中,單擊“下一步”。

 

在“應用程式型別”下的“應用程式設定”頁,選擇“控制檯應用程式”。選擇“其他選項”下的“空專案”設定並單擊“完成”。

 

現在,您得到了一個沒有原始碼檔案的專案。

 

使用解決方案資源管理器

通過解決方案資源管理器,您可以輕鬆使用解決方案中的檔案和其他資源。

 

在本步驟中,您要向專案新增一個類,Visual Studio 會將 .h 和 .cpp 檔案新增到專案中。然後,為測試類的主程式向專案新增一個新的原始碼檔案。

 

向專案新增類

如果“解決方案資源管理器”視窗不可見,請單擊“檢視”選單上的“解決方案資源管理器”。

 

右擊“解決方案資源管理器”中的“標頭檔案”資料夾並指向“新增”。然後單擊“類”。

 

在“Visual C++”類別中,單擊“Visual Studio 已安裝的模板”區域中的“C++”,然後單擊“C++ 類”。單擊“新增”。

 

在“一般 C++ 類嚮導”中,鍵入“Cardgame”作為“類名”,並接受預設的檔名,然後單擊和設定。然後單擊“完成”。

 

對編輯區域中顯示的 Cardgame.h 檔案進行下列更改:

 

在類定義的左大括號之後新增兩個私有資料成員:

 

  複製程式碼

int players;

static int totalparticipants;

 

 

新增一個採用一個 int 型別的引數的公共建構函式原型:

 

  複製程式碼

Cardgame(int p);

 

 

刪除為您生成的預設建構函式。預設建構函式是沒有引數的建構函式。預設建構函式類似於如下所示:

 

  複製程式碼

Cardgame(void);

 

 

進行上述更改後,Cardgame.h 檔案應如下所示:

 

  複製程式碼

#pragma once

class Cardgame

{

        int players;

        static int totalparticipants;

    public:

        Cardgame(int p);

        ~Cardgame(void);

};

 

 

#pragma once 行指明編譯器只包含該檔案一次。有關更多資訊,請參見 once。

 

有關此標頭檔案中包含的其他 C++ 關鍵字的資訊,請參見 class (C++)、int、Static (C++) 和 public (C++)。

 

雙擊“原始檔”資料夾中的“Cardgame.cpp”,以將其開啟進行編輯。

 

為採用一個 int 引數的建構函式新增程式碼:

 

  複製程式碼

Cardgame::Cardgame(int p)

{

    players = p;

    totalparticipants += p;

    cout << p << " players have started a new game.  There are now "

         << totalparticipants << " players in total." << endl;

}

 

 

開始鍵入 pl 或 to 時,可以按 Ctrl-空格鍵,自動完成功能將為您完成鍵入 players 或 totalparticipants。

 

刪除自動生成的預設建構函式:

 

  複製程式碼

Cardgame::Cardgame(void);

 

 

進行上述更改後,Cardgame.cpp 檔案應如下所示:

 

  複製程式碼

#include "Cardgame.h"

#include <iostream>

using namespace std;

 

Cardgame::Cardgame(int p)

{

    players = p;

    totalparticipants += p;

    cout << p << " players have started a new game.  There are now "

         << totalparticipants << " players in total." << endl;

}

Cardgame::~Cardgame(void)

{

}

 

 

有關 #include 的說明,請參見 The #include Directive。

 

新增原始檔

在本步驟中,您將為測試類的主程式新增一個原始碼檔案。

 

新增新原始檔

在“專案”選單上,單擊“新增新項”。

 

也可以使用“解決方案資源管理器”來向專案新增新檔案,方法是右擊“解決方案資源管理器”中的“原始檔”資料夾,指向“新增”。然後單擊“新建項”。

 

在“Visual C++”區域中,選擇“程式碼”。然後單擊“C++ 檔案(.cpp)”。

 

鍵入“testgames”作為“名稱”,然後單擊“新增”。

 

在 testgames.cpp 編輯視窗中,鍵入以下程式碼:

 

  複製程式碼

#include "Cardgame.h"

int Cardgame::totalparticipants = 0;

int main()

{

    Cardgame *bridge = 0;

    Cardgame *blackjack = 0;

    Cardgame *solitaire = 0;

    Cardgame *poker = 0;

 

    bridge = new Cardgame(4);

    blackjack = new Cardgame(8);

    solitaire = new Cardgame(1);

    delete blackjack;

    delete bridge;

    poker = new Cardgame(5);

    delete solitaire;

    delete poker;

 

    return 0;

}

 

 

有關此原始檔中包含的 C++ 關鍵字的資訊,請參見new Operator (C++) 和 delete Operator (C++)。

 

在“生成”選單上,單擊“生成解決方案”。

 

在“輸出”視窗中,您應當看到生成的輸出,它指示已編譯專案,並且未發生錯誤。如果未看到,請將您的程式碼與該主題較早顯示的程式碼進行比較

在本步驟中,您將故意在程式碼中引入一個 Visual C++ 語法錯誤,以瞭解什麼是編譯錯誤,以及如何修復它。編譯專案時,會顯示錯誤訊息以指示所發生的問題的性質和位置。

 

先決條件

本主題假定您具備 C++ 語言的基礎知識。

 

使用 IDE 修復編譯錯誤

在 testgames.cpp 中,刪除最後一行中的分號,使程式碼如下所示:

 

  複製程式碼

return 0

 

 

在“生成”選單上,單擊“生成解決方案”。

 

“輸出”視窗中顯示一條訊息,指示生成專案失敗。

 

單擊“輸出”視窗中的“轉到下一條訊息”按鈕(指向右方的綠色箭頭)。“輸出”視窗中的錯誤訊息和狀態列區域指示右大括號前缺少一個分號。

 

若要檢視有關錯誤的更多幫助資訊,請突出顯示錯誤,並按 F1 鍵。

 

將分號重新新增到導致語法錯誤的行的末尾:

 

  複製程式碼

return 0;

 

 

在“生成”選單上,單擊“生成解決方案”。

 

“輸出”視窗中顯示一條訊息,指示專案已正確編譯。

以“除錯”模式執行程式使您可以使用斷點來暫停程式,以檢查變數和物件的狀態。

 

在本步驟中,您將在程式執行時觀察變數的值,並推斷為什麼值與預期的不同。

 

先決條件

本主題假定您具備 C++ 語言的基礎知識。

 

以“除錯”模式執行程式

如果“testgames.cpp”檔案不可見,請在編輯區域中單擊該檔案對應的選項卡。

 

單擊以下行,將其設定為編輯器中的當前行:

 

  複製程式碼

solitaire = new Cardgame(1);

 

 

若要在該行上設定斷點,請單擊“除錯”選單上的“切換斷點”,或者按 F9。也可以單擊程式碼行左側的區域來設定或清除斷點。

 

設定了斷點的程式碼行的左側會顯示一個紅色圓圈。

 

在“除錯”選單上單擊“開始除錯”,或者按 F5。

 

當程式執行到包含斷點的行時,執行將暫時停止(因為程式處於“中斷”模式)。程式碼行左側的黃色箭頭指示該行是要執行的下一個程式碼行。

 

若要檢查 totalparticipants 變數的值,請將滑鼠指標懸停在該變數上方。該變數的名稱及其值 12 即顯示在工具提示視窗中。

 

右擊 totalparticipants 變數並單擊“新增監視”,以在“監視”視窗中顯示該變數。您也可以選擇該變數並將其拖動到“監視”視窗。

 

在“除錯”選單上,單擊“逐過程”,或者按 F10 步進到下一行程式碼。

 

totalparticipants 的值現在顯示為 13。

 

右擊 main 方法的最後一行 (return 0;),並單擊“執行到游標處”。程式碼左側的黃色箭頭指向要執行的下一個語句。

 

當 Cardgame 終止時,totalparticipants 數應減小。此時,totalparticipants 應等於 0,這是因為所有的 Cardgame 指標都已刪除,但是“監視 1”視窗指示 totalparticipants 等於 18。

 

程式碼中存在一個 bug,您將在下一節中檢測並修復它。

 

在“除錯”選單上,單擊“停止除錯”或者按 Shift-F5 停止程式。

在本步驟中,您將修改程式以修復在測試專案時發現的問題。

 

先決條件

本主題假定您具備 C++ 語言的基礎知識。

 

修復包含 bug 的程式

若要明白在 Cardgame 物件銷燬時會發生什麼,請檢視 Cardgame 類的解構函式。

 

在“檢視”選單上,單擊“類檢視”,或者單擊“解決方案資源管理器”視窗中的“類檢視”選項卡。

 

展開“game”專案樹並單擊“Cardgame”類。

 

下方的區域顯示類的成員和方法。

 

右擊“~Cardgame(void)”解構函式並單擊“轉到定義”。

 

要在 Cardgame 終止時減少 totalparticipants ,請在 Cardgame::~Cardgame 解構函式的左大括號和右大括號之間鍵入以下程式碼:

 

  複製程式碼

totalparticipants -= players;

cout << p << " players have started a new game.  There are now "

     << totalparticipants << " players in total." << endl;

 

 

進行上述更改後,Cardgame.cpp 檔案應如下所示:

 

  複製程式碼

#include "Cardgame.h"

#include <iostream>

using namespace std;

Cardgame::Cardgame(int p)

{

    players = p;

    totalparticipants += p;

    cout << p << " players have started a new game.  There are now "

         << totalparticipants << " players in total." << endl;

}

 

Cardgame::~Cardgame(void)

{

    totalparticipants -= players;

    cout << players << " players have finished their game.  There are now "

         << totalparticipants << " players in total." << endl;

}

 

 

在“生成”選單上,單擊“生成解決方案”。

 

在“除錯”選單上,單擊“執行”,或按 F5,以“除錯”模式執行該程式。程式將在第一個斷點處暫停。

 

在“除錯”選單上單擊“逐過程”或者按 F10 逐句通過程式。

 

請注意,執行每個 Cardgame 建構函式後,totalparticipants 的值會增大。而在刪除每個指標(並呼叫解構函式)後,totalparticipants 的值會減小。

 

單步執行至程式的最後一行。恰好在執行 return 語句之前,totalparticipants 等於 0。繼續逐句通過程式,直到程式退出;或者,在“除錯”選單上單擊“執行”或按 F5,允許程式繼續執行,直到退出。

現在,我們建立了應用程式,最後一步是建立可供其他使用者在其計算機上安裝該程式的安裝程式。為此,我們需要將新專案新增到現有解決方案。此新專案的輸出是 setup.exe 檔案,該檔案用於安裝我們之前在另一臺計算機上建立的應用程式。

 

本演練將使用 Windows Installer 來部署應用程式。您還可以使用 ClickOnce 部署應用程式。有關更多資訊,請參見 ClickOnce 部署。有關常規部署的更多資訊,請參見部署應用程式和元件。

 

先決條件

本主題假定您具備 C++ 語言的基礎知識。

 

建立安裝專案和安裝程式

在“檔案”選單上單擊“新增”,再單擊“新建專案...”。

 

隨即出現“新增新專案”對話方塊。

 

從“專案型別:”窗格中,展開“其他專案型別”節點並選擇“安裝和部署”。

 

從“模板”窗格中,選擇“安裝嚮導”。為安裝專案鍵入名稱(如 gameInstaller),並單擊“確定”按鈕。

 

將出現“安裝嚮導”。單擊“下一步”繼續。

 

從嚮導的“選擇一種專案型別”窗格中,選擇“為 Windows 應用程式建立一個安裝程式”選項,並單擊“下一步”繼續。

 

從嚮導的“選擇要包括的專案輸出”窗格,選擇“遊戲的主輸出”,並單擊“下一步”繼續。

 

無需在安裝程式中包括任何其他檔案,因此,從安裝程式的“選擇要包括的檔案”窗格中,單擊“下一步”。

 

檢查嚮導的更改,並驗證所有內容是否正確。單擊“完成”建立專案。

 

“解決方案資源管理器”中將列出新的 gameInstaller 專案。此專案將列出應用程式依靠的依賴項(如 C 執行時庫或 .NET Framework)以及安裝程式中將包括的專案檔案。

 

建立安裝專案後,有許多選項可以更改。有關更多資訊,請參見 Windows Installer 部署。

 

通過在“解決方案資源管理器”中選擇安裝程式並從“生成”選單單擊“生成 gameInstaller”來生成安裝程式。

 

找到上一節建立的 setup.exe 和 gameInstaller.msi 程式。在計算機上雙擊任一檔案安裝應用程式。

我們已經學習了 Visual Studio IDE,現在可以開始使用 Visual C++ 編寫程式了。我們將學習建立的第一個應用程式型別是命令列應用程式。命令列應用程式不包含圖形使用者介面 (GUI)。通常,命令列應用程式從控制檯讀取輸入,並將輸出寫入該控制檯,而不是寫入圖形視窗。

 

在本節中,您將學習如何建立 C 和 C++ 命令列應用程式。還將學習如何建立不使用 Microsoft 擴充套件的標準 C 和 C++ 程式。如果您希望使用 Visual C++ 建立在其他作業系統上使用的應用程式,這將很有用。


參考資料: 建立命令列應用程式幫助

相關文章