通知
すべてクリア
Topic starter
2008年2月17日 10:21 AM
newについて質問があります。
<質問1>
下記のようなプログラムを実行し、
「int* p = new int;」でブレークし、ステップインすると、
「NEW.CPP」のファイルに飛んでしまいます。何もインクルード
していないのに、「NEW.CPP」のファイルに飛んでしまうのでしょうか。
<質問2>
「new」の戻値の型は「void*」なのに、
「int*」に自動的に型変換されるのでしょうか。
分かる方いらっしゃいましたら、お願いします。
void main(void)
{
int* p = new int;
}
環境:VC6
2008年2月17日 10:43 AM
> 「NEW.CPP」のファイルに飛んでしまいます。何もインクルード
> していないのに、「NEW.CPP」のファイルに飛んでしまうのでしょうか。
operator new はランタイムライブラリに用意された関数に変換されます。
つまり普通の関数呼び出しと同じなのです。
>「new」の戻値の型は「void*」なのに、
>「int*」に自動的に型変換されるのでしょうか。
YES. コンパイラが適切な型にキャストします。
Topic starter
2008年2月17日 3:49 PM
ご回答ありがとうございます。
理解することができました。