Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。1,533件91c++で複数あるキャストの違いを教えてください。どちらも使える場合はどちらを選べばいいかわかまりません。新設されたキャストを使うようにするとソースコード自体にプログラマの意図を表現できて幸せになれます。言語仕様書的な厳密話はちょっとおいておいて実用上の話をするとstatic_cast値を、違う型の「意味的に同じ」(内部表現が異なる)値にします。意味的には同じ数値ですが、コンピュータの中での内部表現は異なることが普通です。使うと良いとされています。一般に安全な型変換です。型変換コンストラクタの起動であると知っている人は次のように書くかもしれません。型に変換したい場合にはこっちの方が自然かも。(double(x)+double(y))/2.0;オイラも今回調べていて初めて知ったのですが、この形式を関数型キャストとか関数スタイルキャストとか言う場合があるらしいです。言語仕様書を読んだ範囲でそのような文言を見たことはありませんのでどこかの方言なのかもしれません。仕様書的にはこれはあくまで一時オブジェクトを型変換コンストラクタを用いて直接初期化すると解釈されます。いうのがあるのであながち方言でもないのでしょう。よると引数が1つのときはキャストと同等で、2つ以上の場合は適切なコンストラクタのあるクラスであって後略とあります。引数の数に関係なく既に書いたとおり一時オブジェクトの構築です。reinterpret_cast値の内部表現を維持したまま、違う型と解釈します。型変換でなく型解釈変更というか、そういう場合に限定して使います。等で別名をつけたりすることが多いです。書けて、これで周辺回路をアクセスすることができます。あって、型解釈だけを整数型からポインタ型に変更していることになります。型解釈を変更することでしょう。このような変換は一般的にはできない危険な行為です。明示するということは、プログラマが(今のこの処理系においては)それができることを熟知していて、結果に責任を負う、というソースコード上の意思表明と読むことができます。脱着の目的にのみ使います。追加する側は普通は安全であり、暗黙変換で可能なので明示しないことが多いです。アクセスを行っている)つまり危険な行為をしているが、承知の上であることを明示する目的につかわれます。アクセスするとバグるので注意が必要です。ここまでの3つの機能を全て区別しないで行うので、プログラマの意思表明「危険なことは承知の上でやっている」と読めません。使わない方向で行きたいところです。dynamic_castソースコード上は型変換に見えますが、実際は実行時の「動的型判別」です。同じことができません。ライブラリやフレームワークの都合で使う場合はしかたないところがあります。使う羽目になったら、設計か実装かどこかに瑕疵があります。書く必要が生じたらリファクタリングしましょう。振る舞いが異なる別例を挙げておきます。実行する前にどうなるのか脳内で検討してみましょう(結果および解説略)。キャストにはいくつかの種類があって、何の問題もない安全なものも、正しく使えば安全なものも、何も保証されないものもあります。いう記法は区別なくキャストしてしまうのです。(関数風の書き方でも効果は同じです。要件を満たす変換のみしか許されません。許す変換は比較的安全なものに限られています。うっかり危険な変換をしようとしてしまったらエラーになってくれるので安心です。互換性のために残されていますが、どのような意図をもってキャストしているのか読み取り難く、バグの原因になりやすいので原則として避けるのが望ましいと考えられています。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。