本文作為入門文檔,簡要介紹C++
的非常基本的語法,后面章節會詳細介紹C++
的各個語法。
C++
程序結構
C++
程序的基本結構包括頭文件、命名空間、類和函數等。
下面我們通過Hello,World
來展示這些元素。
#include <iostream> // 包含標準輸入輸出流庫
using namespace std; // 使用標準命名空間,避免每次調用標準庫時都要加std::前綴int main() {cout << "Hello, World!" << endl; // 輸出Hello, World!到控制臺return 0; // 返回0表示程序正常結束
}
詳解:
- 頭文件:
#include <iostream>
指令包含了標準輸入輸出流庫,通過它,程序可以使用cout
和cin
等對象。 - 命名空間:
using namespace std;
使得在程序中可以直接使用std
命名空間中的名字函數,而不需要每次都加上std::
前綴。這是為了方便,但在大型項目中,為了避免命名沖突,通常會顯式地使用命名空間前綴。 - 主函數:
int main()
是程序的入口點,程序從這里開始執行。main
函數可以返回一個整數,通常返回0
表示程序正常結束,返回非零值表示出現錯誤或異常情況。 - 輸出語句:
cout << "Hello, World!" << endl;
使用cout
對象向控制臺輸出字符串,endl
用于插入換行符并刷新輸出緩沖區。
類與對象
我們都知道,C++
是一種支持面向對象的編程語言,類(class)是C++
中最重要的概念之一,通過類可以定義對象的屬性和行為。
示例代碼:
#include <iostream>
using namespace std;class Dog {
private:string name;int age;public:// 構造函數Dog(string dogName, int dogAge) : name(dogName), age(dogAge) {}// 成員函數,用于輸出狗的信息void printInfo() {cout << "Dog name: " << name << ", Age: " << age << endl;}
};int main() {Dog myDog("Buddy", 5); // 創建一個Dog對象myDog.printInfo(); // 調用成員函數輸出信息return 0;
}
詳解:
- 類定義:
class Dog
定義了一個名為Dog
的類。 - 私有成員:
private:
部分定義了類的私有成員變量name
和age
。這些變量只能在類內部訪問和修改。 - 公有成員:
public:
部分定義了類的公有成員函數printInfo()
和構造函數Dog(string dogName, int dogAge)
。構造函數用于初始化對象的狀態,創建類對象時,會自動調用對應的構造函數。 - 對象創建:
Dog myDog("Buddy", 5);
創建了一個Dog
類的對象myDog
,并使用構造函數初始化了它的name
和age
屬性。 - 成員函數調用:
myDog.printInfo();
調用了myDog
對象的printInfo()
成員函數,輸出對象的信息。
函數與變量
函數封裝代碼塊,它可以接收參數并返回結果。變量用于存儲數據,可以是基本數據類型(如 int
、float
、char
等),也可以是我們自定義的類型(如類)。
示例代碼:
#include <iostream>
using namespace std;// 函數聲明
int add(int a, int b);int main() {int x = 10, y = 20;int sum = add(x, y); // 調用函數并存儲結果cout << "Sum: " << sum << endl; // 輸出結果return 0;
}// 函數定義
int add(int a, int b) {return a + b; // 返回兩個整數的和
}
詳解:
- 函數聲明:在
main
函數之前聲明了add
函數,這告訴編譯器add
函數的存在,以便在main
函數中調用它。 - 變量聲明與初始化:在
main
函數中聲明并初始化了兩個整數變量x
和y
。 - 函數調用:
int sum = add(x, y);
調用了add
函數,并將返回值賦給變量sum
。 - 函數定義:在
main
函數之后定義了add
函數,它接收兩個整數參數并返回它們的和。
高級特性
C++ 提供了許多高級特性,如模板、異常處理、STL(標準庫)等,這些特性極大地增強了 C++ 的靈活性。
通過模板,程序員可以編寫與類型無關的代碼。通過模板,可以創建泛型函數和類,這些函數和類可以處理任意類型的數據。
示例代碼:
#include <iostream>
using namespace std;// 泛型函數模板
template <typename T>
T max(T a, T b) {return (a > b) ? a : b;
}int main() {int intMax = max(10, 20); // 調用泛型函數模板處理整數double doubleMax = max(10.5, 20.3); // 調用泛型函數模板處理浮點數cout << "Int max: " << intMax << endl;cout << "Double max: " << doubleMax << endl;return 0;
}
異常處理:C++ 提供了異常處理機制,程序可以在運行時檢測和處理錯誤情況。通過使用 try
、catch
和 throw
關鍵字,可以操作異常相關能力。
STL(標準模板庫):STL 是一組高效的、通用的模板類和函數,用于執行常見的編程任務,如sort
、map
、find
、set
等。STL 提供了容器(如 vector
、map
、set
等)、迭代器、算法和函數對象等組件。
代碼規范
這里簡單介紹幾個C++
的編碼規范:
- 使用 const 關鍵字:在函數參數和返回值前使用
const
關鍵字可以表明這些參數或返回值不會被修改,有助于提高代碼的可讀性和安全性。 - 避免使用全局變量:全局變量會導致代碼難以維護和調試。盡量使用局部變量或類的成員變量來封裝數據。
- 使用 RAII(資源獲取即初始化):RAII 是一種管理資源(如內存、文件句柄、套接字等)的技術。通過將對象的生命周期與資源的生命周期綁定在一起,可以確保資源在不再需要時自動釋放(非常有用)。
- 編寫清晰的代碼:使用有意義的變量名、函數名和注釋來提高代碼的可讀性。避免使用過于復雜的代碼結構,盡量保持代碼簡潔直觀。
作者介紹
- 程序喵大人
- 35- 資深C/C++/Rust/Android/iOS客戶端開發
- 10年大廠工作經驗
- 嵌入式/人工智能/自動駕駛/音視頻/游戲開發入門級選手
- 《C++20高級編程》《C++23高級編程》等多本書籍著譯者
C++訓練營
專為校招、社招3年工作經驗的同學打造的1V1 C++訓練營,量身定制學習計劃、每日代碼review,簡歷優化,面試輔導,一條龍服務,已幫助多名學員獲得offer!訓練營介紹