newについて

[戻る]
WAT 2008/02/17(日) 10:21:54
newについて質問があります。

<質問1>
下記のようなプログラムを実行し、
「int* p = new int;」でブレークし、ステップインすると、
「NEW.CPP」のファイルに飛んでしまいます。何もインクルード
していないのに、「NEW.CPP」のファイルに飛んでしまうのでしょうか。

<質問2>
「new」の戻値の型は「void*」なのに、
「int*」に自動的に型変換されるのでしょうか。

分かる方いらっしゃいましたら、お願いします。

void main(void)
{
    int* p = new int;
}

環境:VC6

επιστημη [HomePage] 2008/02/17(日) 10:43:57
> 「NEW.CPP」のファイルに飛んでしまいます。何もインクルード
> していないのに、「NEW.CPP」のファイルに飛んでしまうのでしょうか。

operator new はランタイムライブラリに用意された関数に変換されます。
つまり普通の関数呼び出しと同じなのです。

>「new」の戻値の型は「void*」なのに、
>「int*」に自動的に型変換されるのでしょうか。

YES. コンパイラが適切な型にキャストします。

WAT 2008/02/17(日) 15:49:15
[[解決]]
ご回答ありがとうございます。
理解することができました。

古いスレッドには追加発言できません。