C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 84 を表示中)
■49801 / )  C++でインスタンス生成する方法について
□投稿者/ デザパタ (11回)-(2010/05/18(Tue) 10:05:31)

分類:[C/C++] 

ちょっといいたことがなんなのか伝わりづらいかもしれませんが、
C++で
const T test = 1.0f;
というような記述を見かけました。
Tはクラスで、const float型の引数を取るコンストラクタを持っています。
で、上記のように書くとそのコンストラクタが呼ばれているようなのですが、
どうしてこのような書き方ができるのでしょうか?その仕様が知りたいのですがわかりません。
(Tで代入演算子をオーバーロードしているような記述は見当たりませんでした)

以下現状の私の考え。
普通なら以下のように書くかと思います。
T test = new T(1.0f);
一番上の記述でnew がいらないのはTの前にconstがついているからで、
スタックに確保されることになると解釈しています。
const T test = (T)1.0f;
こういう解釈でいいんですかねぇ。
でもこれでなぜコンストラクタが呼ばれるのか・・・わかりません。
返信 編集キー/


管理者用

- Child Tree -