[cppll:0201] <tips> NULL による参照型の初期化

Subject:
[cppll:0201] <tips> NULL による参照型の初期化
From:
Wraith the Trickster <wraith@...>
Date:
Tue, 18 Dec 2001 22:20:29 +0900
X-Mailer:
Microsoft Outlook Express 5.50.4807.1700
Message-Id:
<001501c187c6$cef01740$3dacc63d@mist>
道化師です。

# 今回のは仕様というよりは実装よりのお話。処理系によってはうま
# くいかないことがあるかもしれません。

参照型の初期化は通常、そのターゲットする型のオブジェクトなくし
て行えませんが、以下のようにすることは可能です。

int &hoge = *((int*)(NULL));

...この例ではただ役立たずな変数を用意しただけですが、オブジェク
トの参照を戻り値として返す関数などでこの手法を用いて無効なオブ
ジェクトを返すことで呼び出し側にエラーが発生したことを伝える手
段の一つとしても使えますし、

hoge.hage().mage().hige();

...などのように *this を返すメソッドを連続して呼び出す際に、エ
ラーが発生したときは NULL を返し、各メソッドの最初に...

 if (NULL == this) {
   return *((hogeclass*)(NULL));
 }

...としておくことで後続の処理を断つなどの応用があります。

□■□■                  Wraith the Trickster                  □■□■
■□■□ 〜I'll go with heaven's advantage and fool's wisdom.〜 ■□■□

スレッド

Navigation

検索

[検索ヘルプ]

Maintener: Tietew <www.tietew.jp>
Powered by Ruby on Rails, Mongrel, PostgreSQL, and Hyper Estraier.
click here