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

変数を指定せず、変数を宣言(?)するのは、C++言語の仕様として適切なものでしょうか。
言葉では説明しづらいので、例を示します。

Dataクラスを使用する場合、通常は

  Data data(100); // (1)

というように使用すると思いますが、これを

  Data(100); // (2)

と記述するのは、C++言語の仕様上、適切でしょうか。

また、(2)の記述方法は何か名称がありますか。

A 回答 (3件)

ああそうそう,


Data(100)
のようにすると (実質的に) 「Data型の定数」というイメージだね. ちょうど
5
と書くと int型の定数になるのと同じようなものだと思えばいいよ.
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

大変よくわかりました。

お礼日時:2015/02/24 21:37

No.1 で既に回答がありますが。


 Data(100); // (2)
と書いた場合、この文が実行されている間、Data class の 100 というパラメータを受け取ることのできるコンストラクタが実行されて、この文を抜けるときに、Data class のデストラクタが実行されます。

言い換えると、この間、有効なインスタンスがひとつできているので、例えば、Data class の、hoge() というメンバ関数が存在すれば、

Data(100).hoge();
と、メンバ関数を実行させることができます。

例えば、日付を扱う Date class があったとして、
int dayOfWeek = Date().deayOfWeek();
のように、「今日の曜日をもらう」という処理が、見かけ上簡単にかけたりします。
※引数無しの Date class が今日の日付で初期化されるという前提で。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

具体的な方法も教えていただき、ありがとうございました。

お礼日時:2015/02/24 21:38

当該位置でコンストラクタを呼び出して, その文が終わったところでデストラクタを呼び出す (もちろん定義されていれば, だが) ね.

文法上は問題なし.
    • good
    • 0
この回答へのお礼

No2と合わせてありがとうございます。

お礼日時:2015/02/24 21:37

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