C++ 速查手冊
12.2 - 強制型態轉換
顯性型態轉換規則 (explicit conversion) 包括具名強制轉型 (named cast) 及舊式轉型 (old-style cast) ,可以任意強制將某個型態轉換成另一個型態,前者具名強制轉型的形式如下
cast-name<type>(expression)
cast-name 有以下種類
- dynamic_cast
- const_cast
- static_cast
- reinterpret_cast
如下例
#include <iostream>
int main() {
char a = 'a';
int b = 97;
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << static_cast<char>(b) << std::endl;
std::cout << static_cast<int>(a) << std::endl;
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:u1202.cpp
功能:示範 C++ 的型態轉換
作者:張凱慶*/
編譯後執行,結果如下
$ g++ u1202.cpp |
$ ./a.out |
a |
97 |
a |
97 |
$ |
std::cout << static_cast<char>(b) << std::endl;
而第 10 行強制將字元 'a' 改以整數型態印出
std::cout << static_cast<int>(a) << std::endl;
至於舊式轉型則是利用小括弧圍住型態型稱,然後放置在某一變數或運算式之前,便可將該變數強制轉換成小括弧的資料型態。
形式如下
(type) (expression)
使用顯性型態轉換須注意,通常從可儲存範圍大的資料型態轉換成儲存範圍小的資料型態,例如從 long 轉換成 short ,常常會造成資料的流失,因此須小心使用。
相關教學影片