So-net無料ブログ作成

引数でポインタを変更しないことを明示するには? [C/C++]

C++で関数の引数にポインタを渡すとき、その渡された関数内でポインタの指しているデータ、または、ポインタを変更しないことを明示したい。

これは const を用いれば可能だ。 「ポインタの指しているデータ、または、ポインタを変更しないこと」というのは、言葉だと分かりにくいけど、サンプルコードを見れば分かりやすい。

//example 1
int toge(const int* p)
{
*p = 22; // NG
p = new int(100); // OK
}

int toge(int* const p)
{
*p = 22; // OK
p = new int(100); // NG
}

int toge(const int* const p)
{
*p = 22; // NG
p = new int(100); // NG
}
ちなみに const int* const p であっても、delete は有効らしい。すなわち次のようになる。
void example1Const(const int* const p)
{
delete p; // OK
}
ということは、関数の引数に何かのインスタンスを渡したら、いつの間にか delete されてしまうことがあり得ると言うことですね。怖いねぇ。
タグ:C++ programming
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。