紀錄考試筆記
public: 能被物件以及使用物件的地方使用
private: 只能在物件內被使用
protected: 只能在物件內被使用,也可以被繼承(inheritance)該物件的物件使用
https://learn.microsoft.com/zh-tw/cpp/cpp/destructors-cpp?view=msvc-170
constructor : 自訂類別初始化其成員的方式,或在建立類別的物件時叫用函式
destructor: 解構函式是成員函式,當物件超出範圍或由 或呼叫delete明確終結時,會自動叫用。
解構子就是建構子的相反,不過建構子可以overload,解構子不行 (只能有一個解構子)。compiler會自動解構子,所以就算不寫也會解構。
寫法:
ex:
protector & public 內的member可在繼承後拿到
https://medium.com/theskyisblue/c-中關於-virtual-的兩三事-1b4e2a2dc373
https://viml.nchc.org.tw/archive_blog_547/
virtual : 被用在修飾member function,代表若有 derived class 的話,該函式可以被 redefined
override : 只要在衍生類別裡面、要覆寫函式後面加上「override」、告訴編譯器這個函式是要用來覆寫基礎類別的虛擬函式就可以了。
ex:
關係圖:
沒有virtual的function不可被改寫
https://medium.com/@s9224914/oop-什麼是抽象-virtual-function-with-c-example-e4d386866709
ex:
Base 類別中的 showInfo() 為 pure virtual function,
意味著 Base 類別不可被實體化成 instance;繼承Base的衍生類別必須實作 showInfo() 函式。
ex:
File_filter內做了pure virtual function : transform
其他兩個class必須實作 transform 這個function(如果有.h檔,必須實作在.h檔內,不能實作在.cpp)
ex:
使用類別成員來超載二元運算子時,會有一個限制,就是運算子的左邊一定要是原物件。
使用 friend函式重載二元運算子時,您要指定兩個參數型態,分別表式運算子左右邊的運算元型態。
"+"
https://openhome.cc/Gossip/CppGossip/friendOverLoadOperator.html
ex:
"="
ex:
"=="
ex:
"++" & "–"
//考完試補
"<<" & ">>"
ex:
在class的.h檔建friend function
在.cpp檔實做(記得要兩個reference)
conversion
//考完試補
output:
Using the Assignment Operator
ex: int_var = (int) char_var;
Using the Cast Operator
在上面的例子中,我們聲明了一個指向值98的整數指標ptr。
列印這些值後,我們可以觀察到*ch 列印“b”,
因為“b”相當於 ASCII 中的 98。值ch包含98。
str.data() 直接以數組方式返回string的內容,
其大小爲size()的返回值,結尾並沒有\0字符。
ex:
https://viml.nchc.org.tw/archive_blog_720/
ex:
也就是說一般的enum可以在不同群之間使用(因為都會被翻成int),但enum class只能在自己的小圈圈用
fstream : 檔案操作的library
or
ex:
開檔方式:
peek:看inputstream但不拿出
ex:
seek
結構化寫入寫出:
ex:
store(write to file)
load(read from file)
用array儲存多筆資料
note:好像要先關一個再開另一個才不會錯
https://wucodingroad.blogspot.com/2017/05/Cplusplus-extern.html
用來聲明此變數只是一個宣告,它的定義在別處,可能在同一個文件,也可能在別的文件,告知程式去尋找。