C++/キャスト
表示
< C++
概要
[編集]C++ではC言語で見られるキャストに加え、以下キーワードを用いてキャストを行うことができる:
- static_cast
- const_cast
- dynamic_cast
- reinterpret_cast
static_cast
[編集]const修飾子およびvolatile修飾子の付与、整数・小数型同士などのキャストに使う。
const_cast
[編集]const修飾子、volatile修飾子を外すために使う。
dynamic_cast
[編集]ダウンキャストするために使う。キャストに失敗した場合はnullptrが返される。
reinterpret_cast
[編集]継承関係にない型同士、整数型とポインタ型の相互変換などに使う。
どう使い分けるのか
[編集]- static_castを使えるときは使う
- const_castを使えるときは使う
- dynamic_castを使えるときは使う
- それでもダメならreinterpret_castを使う
C形式のcastにしかできないこと
[編集]出典: [1]
- 派生クラスへのポインターやリファレンスから、基底クラスへのポインターやリファレンスへの変換
- 派生クラスのメンバーへのポインターから、曖昧ではない非virtualな基底クラスのメンバーへのポインターへの変換
- 曖昧ではなく非virtualな基底クラスのポインターやリファレンスあるいはメンバーへのポインターから、派生クラスのポインターやリファレンスあるいはメンバーへのポインターへの変換
ただし、これらのキャストはアクセス修飾子を無視するため、出現した場合は設計が間違っているとされる[1]。
出典
[編集]- ^ 1.0 1.1 https://cpplover.blogspot.com/2010/07/c.html 20210414