C++ 基本語法

C++ 程式可以定義為對象的集合,這些對象通過調用彼此的方法進行交互。現在讓我們簡要地看一下什麼是類、對象,方法、即時變數。

  • 對象 - 對象具有狀態和行為。例如:一只狗的狀態 - 顏色、名稱、品種,行為 - 搖動、叫喚、吃。對象是類的實例。
  • 類 - 類可以定義為描述對象行為/狀態的範本/藍圖。
  • 方法 - 從基本上說,一個方法表示一種行為。一個類可以包含多個方法。可以在方法中寫入邏輯、運算元據以及執行所有的動作。
  • 即時變數 - 每個對象都有其獨特的即時變數。對象的狀態是由這些即時變數的值創建的。

C++ 程式結構

讓我們看一段簡單的代碼,可以輸出單詞 Hello World

實例

#include <iostream> using namespace std; // main() 是程式開始執行的地方 int main() { cout << "Hello World"; // 輸出 Hello World return 0; }

接下來我們講解一下上面這段程式:

  • C++ 語言定義了一些頭檔,這些頭檔包含了程式中必需的或有用的資訊。上面這段程式中,包含了頭檔 <iostream>
  • 下一行 using namespace std; 告訴編譯器使用 std 命名空間。命名空間是 C++ 中一個相對新的概念。
  • 下一行 // main() 是程式開始執行的地方 是一個單行注釋。單行注釋以 // 開頭,在行末結束。
  • 下一行 int main() 是主函數,程式從這裏開始執行。
  • 下一行 cout << "Hello World"; 會在螢幕上顯示消息 "Hello World"。
  • 下一行 return 0; 終止 main( )函數,並向調用進程返回值 0。

編譯 & 執行 C++ 程式

接下來讓我們看看如何把源代碼保存在一個檔中,以及如何編譯並運行它。下麵是簡單的步驟:

  • 打開一個文本編輯器,添加上述代碼。
  • 保存檔為 hello.cpp。
  • 打開命令提示符,進入到保存檔所在的目錄。
  • 鍵入 'g++ hello.cpp ',輸入回車,編譯代碼。如果代碼中沒有錯誤,命令提示符會跳到下一行,並生成 a.out 可執行檔。
  • 現在,鍵入 ' a.out' 來運行程式。
  • 您可以看到螢幕上顯示 ' Hello World '。
$ g++ hello.cpp
$ ./a.out
Hello World

請確保您的路徑中已包含 g++ 編譯器,並確保在包含原始檔案 hello.cpp 的目錄中運行它。

您也可以使用 makefile 來編譯 C/C++ 程式。

C++ 中的分號 & 語句塊

在 C++ 中,分號是語句結束符。也就是說,每個語句必須以分號結束。它表明一個邏輯實體的結束。

例如,下麵是三個不同的語句:

x = y; y = y+1; add(x, y);

語句塊是一組使用大括弧括起來的按邏輯連接的語句。例如:

{ cout << "Hello World"; // 輸出 Hello World return 0; }

C++ 不以行末作為結束符的標識,因此,您可以在一行上放置多個語句。例如:

x = y; y = y+1; add(x, y);

等同於

x = y; y = y+1; add(x, y);

C++ 識別字

C++ 識別字是用來標識變數、函數、類、模組,或任何其他用戶自定義專案的名稱。一個識別字以字母 A-Z 或 a-z 或下劃線 _ 開始,後跟零個或多個字母、下劃線和數字(0-9)。

C++ 識別字內不允許出現標點字元,比如 @、& 和 %。C++ 是區分大小寫的編程語言。因此,在 C++ 中,Manpowermanpower 是兩個不同的識別字。

下麵列出幾個有效的識別字:

mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal

C++ 關鍵字

下表列出了 C++ 中的保留字。這些保留字不能作為常量名、變數名或其他識別字名稱。

asmelsenewthis
autoenumoperatorthrow
boolexplicitprivatetrue
breakexportprotectedtry
caseexternpublictypedef
catchfalseregistertypeid
charfloatreinterpret_casttypename
classforreturnunion
constfriendshortunsigned
const_castgotosignedusing
continueifsizeofvirtual
defaultinlinestaticvoid
deleteintstatic_castvolatile
dolongstructwchar_t
doublemutableswitchwhile
dynamic_castnamespacetemplate 

完整關鍵字介紹可查閱:C++ 的關鍵字(保留字)完整介紹


三字元組

三字元組就是用於表示另一個字元的三個字元序列,又稱為三字元序列。三字元序列總是以兩個問號開頭。

三字元序列不太常見,但 C++ 標準允許把某些字元指定為三字元序列。以前為了表示鍵盤上沒有的字元,這是必不可少的一種方法。

三字元序列可以出現在任何地方,包括字串、字元序列、注釋和預處理指令。

下麵列出了最常用的三字元序列:

三字元組替換
??=#
??/\
??'^
??([
??)]
??!|
??<{
??>}
??-~

如果希望在根源程式中有兩個連續的問號,且不希望被預處理器替換,這種情況出現在字元常量、字串字面值或者是程式注釋中,可選辦法是用字符串的自動連接:"...?""?..."或者轉義序列:"...?\?..."。

從Microsoft Visual C++ 2010版開始,該編譯器默認不再自動替換三字元組。如果需要使用三字元組替換(如為了相容古老的軟體代碼),需要設置編譯器命令行選項/Zc:trigraphs

g++仍默認支持三字元組,但會給出編譯警告。

C++ 中的空格

只包含空格的行,被稱為空白行,可能帶有注釋,C++ 編譯器會完全忽略它。

在 C++ 中,空格用於描述空白符、跳位字元、換行符和注釋。空格分隔語句的各個部分,讓編譯器能識別語句中的某個元素(比如 int)在哪里結束,下一個元素在哪里開始。因此,在下面的語句中:

int age;

在這裏,int 和 age 之間必須至少有一個空格字元(通常是一個空白符),這樣編譯器才能夠區分它們。另一方面,在下面的語句中:

fruit = apples + oranges;   // 獲取水果的總數

fruit 和 =,或者 = 和 apples 之間的空格字元不是必需的,但是為了增強可讀性,您可以根據需要適當增加一些空格。