2014年5月8日木曜日

ヌルポインタ

これまでは NULL や 0 で ヌルポインタ をあらわしてきました.
しかし,
NULL : 処理系依存.(0とは限らないですよ!)
0 : 数値を代入しているのかヌルポインタを代入しているのかが一見してわからない.
という問題がそれぞれあります。

スマートポインタが強化されため、生のポインタを直接使う機会は少なくなりそうです.
それでもC API や C++99 の API ライブラリを使う際には必要となるかと.


たとえば、
[C++03]
Widget* w;

void destory()
{
delete w;
w = NULL; // あるいは w = 0;
}

void create()
{
if( w == NULL ) {
w = new DialogWindow();
}
}

[C++11]
Widget* w;

void destory()
{
delete w;
w = nullptr;
}

void create()
{
if( w == nullptr ) {
w = new DialogWindow();
}
}

0 件のコメント:

コメントを投稿