摘要:[C/C++] Type Casting and Coercion
工作久了有時候都忘記一些很基礎的東西
所以最近在重新開始把一些基礎的C/C++知識做一些整理
Datatype = Data type + Data operation
datatype的概念是包含data的型別以及如何操作資料的operation。
Casting:
透過手動的方式將一種data type轉型成另一種data type。C++主要有三大類的casting方法:
1. 常用,由C而來的方式,稱為C-style casting。
bool vBool = (bool)vInt;
2. 較直觀的方法,但比較少被使用。透過function轉型,被稱為 function-style casting。
bool vBool = bool(vInt);
相較於其他兩種方法,Function-style casting是有使用上的限制的,例如下面這種情形就無法使用:
bool*** vBoolPtr = bool***(vInt);
必須要利用typedef,改成以下方式才合法:
typedef bool*** B;
B vBoolPtr = B(vInt);
3. 較特定且清楚的轉型方式,包含static casting, dynamic casting(關於這個部分的casting還有很多可以內容值得學習的,筆者將與其他篇章作進一步的整理)。
bool vBool = static_cast<bool>(vInt);
Coercion:
由Compiler自動完成data type轉型。
int vInt = vDouble;
[Reference]