2012年2月5日日曜日

C++プログラミング入門(5) // 配列とnew,ポインタと参照

配列とnew

【int array[5];】と【int *array = new int[5];】の違い

・配列には「必要なメモリの大きさがコンパイル時にわかっている」「関数が終わるときに必ず解放する」制限がある

・newは上記の制限がない分,メモリの空き場所を探すのに時間がかかる

参照とポインタ

・参照は必ず初期化する必要があり,指すものを変えられない.(安全)
・ポインタは上記の成約がない.(気をつけるべし)

データ量の大きいクラスTを引数とする関数func (例えばこんなの void func(T t){} )
を呼び出した時,コピーが生成される.
このムダを省くために,
「書き換えるときはポインタ渡し,書き換えないなら参照」
を徹底するべし.
(ポインタでも 書き換えたくない場合はconstをつければ参照と同様な効果が得られるが,呼び出し側のコードを見ただけでは判断できなくなるので使い分けること)

0 件のコメント:

コメントを投稿