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