# 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++ 中,**Manpower** 和 **manpower** 是兩個不同的標識符。
下面列出幾個有效的標識符:
~~~
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
~~~
### C++ 關鍵字
下表列出了 C++ 中的保留字。這些保留字不能作為常量名、變量名或其他標識符名稱。
| asm | else | new | this |
|:----|:----|:----|:----|
| auto | enum | operator | throw |
| bool | explicit | private | true |
| break | export | protected | try |
| case | extern | public | typedef |
| catch | false | register | typeid |
| char | float | reinterpret_cast | typename |
| class | for | return | union |
| const | friend | short | unsigned |
| const_cast | goto | signed | using |
| continue | if | sizeof | virtual |
| default | inline | static | void |
| delete | int | static_cast | volatile |
| do | long | struct | wchar_t |
| double | mutable | switch | while |
| dynamic_cast | namespace | template | ? |
### 三字符組
三字符組就是用于表示另一個字符的三個字符序列,又稱為三字符序列。三字符序列總是以兩個問號開頭。
三字符序列不太常見,但 C++ 標準允許把某些字符指定為三字符序列。以前為了表示鍵盤上沒有的字符,這是必不可少的一種方法。
三字符序列可以出現在任何地方,包括字符串、字符序列、注釋和預處理指令。
下面列出了最常用的三字符序列:
| 三字符組 | 替換 |
|-----|-----|
| ??= | # |
| ??/ | \ |
| ??' | ^ |
| ??( | [ |
| ??) | ] |
| ??! | | |
| ??< | { |
| ??> | } |
| ??- | ~ |
所有的編譯器都不支持三字符組,為避免造成混亂,不建議使用三字符組。
### C++ 中的空格
只包含空格的行,被稱為空白行,可能帶有注釋,C++ 編譯器會完全忽略它。
在 C++ 中,空格用于描述空白符、制表符、換行符和注釋。空格分隔語句的各個部分,讓編譯器能識別語句中的某個元素(比如 int)在哪里結束,下一個元素在哪里開始。因此,在下面的語句中:
~~~
int age;
~~~
在這里,int 和 age 之間必須至少有一個空格字符(通常是一個空白符),這樣編譯器才能夠區分它們。另一方面,在下面的語句中:
~~~
fruit = apples + oranges; // 獲取水果的總數
~~~
fruit 和 =,或者 = 和 apples 之間的空格字符不是必需的,但是為了增強可讀性,您可以根據需要適當增加一些空格。
- C++ 入門
- C++ 簡介
- C++ 環境設置
- C++ 基本語法
- C++ 注釋
- C++ 數據類型
- C++ 變量類型
- C++ 變量作用域
- C++ 常量
- C++ 修飾符類型
- C++ 存儲類
- C++ 運算符
- C++ 循環
- C++ while 循環
- C++ for 循環
- C++ do...while 循環
- C++ 嵌套循環
- C++ break 語句
- C++ continue 語句
- C++ goto 語句
- C++ 判斷
- C++ if 語句
- C++ if...else 語句
- C++ 嵌套 if 語句
- C++ switch 語句
- C++ 嵌套 switch 語句
- C++ 函數
- C++ 數字
- C++ 數組
- C++ 多維數組
- C++ 指向數組的指針
- C++ 傳遞數組給函數
- C++ 從函數返回數組
- C++ 字符串
- C++ 指針
- C++ Null 指針
- C++ 指針的算術運算
- C++ 指針 vs 數組
- C++ 指針數組
- C++ 指向指針的指針(多級間接尋址)
- C++ 傳遞指針給函數
- C++ 從函數返回指針
- C++ 引用
- C++ 把引用作為參數
- C++ 把引用作為返回值
- C++ 日期 & 時間
- C++ 基本的輸入輸出
- C++ 數據結構
- C++ 面向對象
- C++ 類 & 對象
- 類 & 對象詳解
- C++ 類成員函數
- C++ 類訪問修飾符
- C++ 類構造函數 & 析構函數
- C++ 拷貝構造函數
- C++ 友元函數
- C++ 內聯函數
- C++ this 指針
- C++ 指向類的指針
- C++ 類的靜態成員
- C++ 繼承
- C++ 重載運算符和重載函數
- C++ 一元運算符重載
- C++ 二元運算符重載
- C++ 關系運算符重載
- C++ 輸入/輸出運算符重載
- C++ ++ 和 -- 運算符重載
- C++ 賦值運算符重載
- C++ 函數調用運算符 重載
- C++ 下標運算符 重載
- C++ 類成員訪問運算符 -> 重載
- C++ 多態
- C++ 數據抽象
- C++ 數據封裝
- C++ 接口(抽象類)
- C++ 高級
- C++ 文件和流
- C++ 異常處理
- C++ 動態內存
- C++ 命名空間
- C++ 模板
- C++ 預處理器
- C++ 信號處理
- C++ 多線程
- C++ Web 編程
- C++ 資源庫
- C++ STL 教程
- C++ 標準庫
- C++ 有用的資源