[C/C++] Type Casting and Coercion

摘要:[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轉型。