二哥這學期選的嵌入式系統要用到 C++ 語言, 最近問我類別的問題, 但我只學過 C 語言, 沒接觸過 C++, 所以就跟市圖借了洪維恩的書給他自己看. 這幾天我拿來翻閱, 覺得有 C 的基礎來學 C++ 似乎不難 (但十幾年前就是因為覺得 C++ 太複雜才改學 Java 的 XD), 這兩天有空就看一看隨手測試一下, 順便寫一下筆記.
參考書籍 :
# C++ Primer 5th Edition 中文版 (碁峰 2019)
# C & C++程式設計經典(第五版) (碁峰 2021)
# C++ 教學手冊 (第三版) (旗標 2012)
關於 C++ 的背景知識摘要如下 :
- C++ 是 Bjarne Stroustrup 於 1980 年開始以 C 為基礎發展的物件導向語言, 目前最新版本為 C++ 20.
- C++ 衍生自 C 語言, 它包含 C 語言所有的功能, 所有 C 程式只要做些許修改甚至完全不用修改即可在 C++ 編譯器中順利執行.
- C++ 的迴圈與分支等基本語法跟 C 語言中完全相同.
- C++ 與 C 最大的差異是 C++ 為物件導向語言, 具有類別的封裝, 多型, 與繼承等功能, 這是 C 語言所沒有的. 其次, C++ 新增了布林型態 bool, 這也是 C 語言沒有的. 隨著版本不斷演進, C++ 發展出泛型等更多功能與語法.
- 結構 (struct) 在 C++ 中並不常用, 因為此功能在 C++ 中大多以類別取代.
參考 :
下面是最簡單的 C++ 程式範例 :
//hello_world.cpp
#include <iostream>
using namespace std;
int main() {
cout << "Hello, world!" << endl;
return 0;
}
此例中首先用前置指令 include 將 C++ 內建輸出入串流函式庫 iostream 含括進來, 然後用 using 指令設定名稱空間為 std, 在 C++ 規範中, 標準函式庫中的函數, 類別與物件都是定義在 std 這個名稱空間中, 設定名稱空間可以讓我們在使用 C++ 標準函式庫裡面的內建函數與類別時, 不需要指定所屬名稱空間, 例如上例若不使用 using 去設定名稱空間, 則程式中用到標準輸出 cout 與跳行 endl 這兩個標準函式庫的物件時, 前面需用 std:: 指明其所屬名稱空間 :
//hello_world.cpp
#include <iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
程式執行入口 main() 函式裡面只有兩行指令, 一是將 "Hello, world!" 與換行符號 endl (注意最後字元是 L 的小寫, 不是 123 的 1, 為行尾符號 end of line 之意) 先後用管線 << 傳送到標準輸出 cout, 然後用 return 傳回 0 表示程式正常結束 (傳回 1 為異常結束).
將此程式輸入到最常用的 C++ 編輯器 Dev-cpp 中存檔為 hello_world.cpp 後編譯執行, 就會在主控台顯示 'Hello, world!' :
上面的程式如果用 C 來寫是這樣 :
//hello_world.c
#include <stdio.h>
int main() {
printf("Hello, world!\n");
return 0;
}
結果如下 :
Dev-cpp 編譯器可在 SourceForge 下載 :
也可以用 replit.com 的免費線上編譯器, 不須下載或安裝即可執行 :
另外還有一個不錯的免註冊直用的線上 C/C++ 編譯器 :
2023-11-23 補充 :
今天在上 Hahow 企業版的 C 語言課程時, 發現老師使用 Tutorialpoint 的線上編譯器, 介面比 OnlinGDB 的乾淨漂亮 :
沒有留言:
張貼留言