- 466 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:17:00 ]
- >>460
459ではあれだけで終わっているが、 実際のところ、5.2.3には続きがあって、括弧の中の式の並びが複数ある場合、 コンストラクタを呼び出して一時オブジェクトを作ると規定されている。 歴史的には、コンストラクタを呼んでクラスの一時オブジェクトを作る構文として 導入されたのが最初で、後にそれを一般化して全ての型に対して使えるようになった。 (C++の設計と進化に書いてあるとおり) その際、組込型では型変換演算子と同じ効力を持たせたという次第。 また、1つしか引数を取らないコンストラクタは、そのクラス型への型変換を提供する。 だから454でのstatic_cast<T>(2)は結局コンストラクタ呼出として機能する。 (あと型変換演算子の話もしたいが省略) C++は、型変換を即ち新しいオブジェクトが作り出されることと捉えているように思われる。 すると、コンストラクタ呼出と型変換の境界が非常に曖昧になっているも納得がいく。
|

|