Exercise 00: Conversion of scalar types (スカラ型の変換)
この演習では、文字列として与えられたリテラルを`char`, `int`, `float`, `double`の4つの基本的なスカラ型に変換します。変換不可能な場合や特殊な値(`nan`, `inf`)の扱いも学びます。`static_cast`が中心的な役割を果たします。
インタラクティブ・デモ
下の入力欄にC++のリテラル(例: `42`, `-3.14`, `'c'`, `nanf`)を入力し、「変換」ボタンを押してください。
変換結果
char: -
int: -
float: -
double: -
Exercise 01: Serialization (シリアライズ)
データ構造体へのポインタを、整数型 `uintptr_t` に変換(シリアライズ)し、その整数から元のポインタへ復元(デシリアライズ)します。このプロセスでは、強力で危険な `reinterpret_cast` を使用します。
インタラクティブ・フロー
1. 元のポインタ
Data* ptr = ?
reinterpret_cast<uintptr_t>
2. シリアライズ後
uintptr_t raw = ?
4. 検証
ptr == deserializedPtr?
reinterpret_cast<Data*>
3. デシリアライズ後
Data* deserializedPtr = ?
Exercise 02: Identify real type (実際の型を識別)
`typeinfo` を使わずに、基底クラスのポインタまたは参照が指すオブジェクトの「実際の型」を特定します。実行時型情報(RTTI)を利用する `dynamic_cast` が主役です。ポインタと参照で挙動が異なる点に注目してください。
インタラクティブ・型識別子
生成されたオブジェクト
?