実験してみました^^
それは何かというと、
「deleteではexceptionが発生するか否か」
です。
#include <iostream>
class B {
public:
~B(){
throw "...";
};
private:
int b;
};
class A {
private:
B memberB;
};
int main (void)
{
A* a = new A;
try {
delete a;
}catch(...) {
std::cout << "exception occured" << std::endl;
}
return 0;
}
結果は、
exception occurred
が表示されました。
gccにて実験したのですが、バージョンはi686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1
です。
もちろん上のコードは、デストラクタで例外をスローする
という、C++上やってはいけないコードです!
(その他にもnewをtry-catchで囲んでいないってのもありますね^^;;;)
(その他にもnewをtry-catchで囲んでいないってのもありますね^^;;;)
やっぱり安全とわかっているstdなど以外は、クラスのメンバ
に別なクラスのインスタンス実体を持つコードは
ちょっと怖いかなって思いました^^;;;