---
# System prepended metadata

title: C++基礎教學

---


---

# 海山資研社課講義

## 目錄
1. C++ 介紹
2. 第一個 C++ 程式
3. 基本資料型態
4. 變數與常數
5. 運算子與表達式
6. 控制結構 (if, else, switch)
7. 迴圈 (for, while, do-while)
8. 陣列 (Arrays)
9. 函數 (Functions)
10. 指標 (Pointers)
11. 字串 (Strings)
12. 結構 (Structs)
13. 類別與物件 (Classes and Objects)
14. 繼承 (Inheritance)
15. 資料封裝與存取控制 (Encapsulation and Access Control)
---

## 1. C++ 介紹

C++ 是由 Bjarne Stroustrup 在 C 語言的基礎上發展而來的高效能、靈活的語言。它廣泛應用於系統軟體、遊戲開發、嵌入式系統等。C++ 的特色是支援面向對象編程（OOP），提供了更強大的抽象能力。

### 主要特性：
- 面向對象編程 (OOP)
- 多重繼承、多型 (Polymorphism)
- 靜態與動態記憶體管理
- 標準模板庫 (STL) 提供的容器、演算法與迭代器
---

## 2. 第一個 C++ 程式

```cpp
#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << "Hello, World!" << endl;
    return 0;
}
```

### 程式分析：
- `#include <bits/stdc++.h>`：引入輸出輸入流庫，用於標準輸出和輸入。
- `using namespace std;`：免去使用"std::"，使程式更簡潔。
- `int main()`：主函數，程式從這裡開始執行。
- `cout`：標準輸出流，用於顯示文字到螢幕。
- `return 0;`：返回 0 表示程式正常結束。

---

## 3. 基本資料型態

C++ 提供了多種基本資料型態：
- `int`：整數型態。
- `float`：單精度浮點數。
- `double`：雙精度浮點數。
- `char`：字元型態。
- `bool`：布林值（`true` 或 `false`）。

範例：
```cpp
int a = 10;
float b = 3.14;
double c = 6.28;
char d = 'A';
bool e = true;
```

---

## 4. 變數與常數

變數：用來存放資料的具名位置。
```cpp
int age = 25;
```

常數：其值不可變動，使用 `const` 關鍵字。
```cpp
const int pi = 3.14;
```

---

## 5. 運算子與表達式

C++ 支援多種運算子：
- 算術運算子：`+`, `-`, `*`, `/`, `%`
- 賦值運算子：`=`, `+=`, `-=`, `*=`, `/=`, `%=`
- 比較運算子：`==`, `!=`, `>`, `<`, `>=`, `<=`
- 邏輯運算子：`&&`, `||`, `!`

範例：
```cpp
int a = 10, b = 20;
int sum = a + b;
bool result = (a < b);
```

---

## 6. 控制結構

### if-else
```cpp
int a = 10;
if (a > 5) {
    cout << "a is greater than 5" << endl;
} else {
    cout << "a is less than or equal to 5" << endl;
}
```

### switch
```cpp
int day = 3;
switch(day) {
    case 1: cout << "Monday"; break;
    case 2: cout << "Tuesday"; break;
    case 3: cout << "Wednesday"; break;
    default: cout << "Invalid day";
}
```

---

## 7. 迴圈

### for 迴圈
```cpp
for (int i = 0; i < 10; i++) {
    cout << i << " ";
}
```

### while 迴圈
```cpp
int i = 0;
while (i < 10) {
    cout << i << " ";
    i++;
}
```

### do-while 迴圈
```cpp
int i = 0;
do {
    cout << i << " ";
    i++;
} while (i < 10);
```

---

## 8. 陣列 (Arrays)

陣列是相同型態的變數集合：
```cpp
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
    cout << arr[i] << " ";
}
```

---

## 9. 函數 (Functions)

函數是可重複使用的程式片段：
```cpp
int add(int a, int b) {
    return a + b;
}

int main() {
    int sum = add(5, 3);
    cout << "Sum: " << sum << endl;
}
```

---

## 10. 指標 (Pointers)

指標是用來儲存變數位址的變數：
```cpp
int a = 10;
int *ptr = &a;  // ptr 是指向 a 的指標
cout << *ptr << endl;  // 輸出 10
```

---

## 11. 字串 (Strings)

C++ 提供 `string` 型態來操作字串：
```cpp
#include <string>

string name = "John";
cout << "Hello, " << name << endl;
```

---

## 12. 結構 (Structs)

結構是一種用來分組相關變數的自定義資料型態：
```cpp
struct Person {
    string name;
    int age;
};

Person person1;
person1.name = "Alice";
person1.age = 25;
```

---

## 13. 類別與物件 (Classes and Objects)

C++ 支援面向對象編程，類別是物件的藍圖。
```cpp
class Dog {
public:
    string name;
    void bark() {
        cout << name << " is barking!" << endl;
    }
};

int main() {
    Dog myDog;
    myDog.name = "Buddy";
    myDog.bark();
}
```

---

## 14. 繼承 (Inheritance)

繼承允許一個類別從另一個類別中繼承屬性與方法：
```cpp
class Animal {
public:
    void eat() {
        cout << "This animal is eating." << endl;
    }
};

class Dog : public Animal {
public:
    void bark() {
        cout << "This dog is barking." << endl;
    }
};

int main() {
    Dog myDog;
    myDog.eat();
    myDog.bark();
}
```

---

## 15. 資料封裝與存取控制 (Encapsulation and Access Control)

C++ 提供存取控制修飾詞 `public`, `private`, 和 `protected` 來控制資料的訪問：
```cpp
class Person {
private:
    string name;
public:
    void setName(string newName) {
        name = newName;
    }
    string getName() {
        return name;
    }
};
```

---

