プロが教えるわが家の防犯対策術!

以下「プログラミング言語C++第3版 日本語版」
112ページから抜粋したものです。

=========================================================
enum flag {x=1, y=2, z=4, e=8}; // 範囲 0~15


flag f1 = 5;     // 型エラー:5はflag型の値ではない。

flag f2 = flag(5);  // ok:flag(5)はflag型のデータであり、
            // flagの範囲に収まっている。

=========================================================

すごい初歩的そうな質問で申し訳ないのですが、
flag(5)とは何を意味しているのでしょうか?

またこのような使い方はC++独特のものなのかCでも
当たり前のように使っているものなのか、できたら
教えてください。

A 回答 (1件)

これは、C++特有のもので、Cで言うところの (flag)5 にあたります。

つまり、キャストなわけですが、コンストラクタ的構文ですね。
ちなみに、double x = double(10) のような書き方もできます(Cだと、double x = (double)10 となりますね)。C++でも C形式のキャストはできますし、ポインタなど、あえてキャストを使用する場合は、dynamic_cast や static_castなどを使用しますので、この形式のキャストはこの例のように、素直なキャストにしか使用しません。
    • good
    • 0
この回答へのお礼

たいへんありがとうございます!!

キャストだって全く気付けませんでした。

お礼日時:2001/09/05 19:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!