以下の例では
class X
{
int *r;
public:
X() {
cout << "X is created";
r = new int[10];
};
~X() {
cout<< "X is destroyed";
delete [] r;
};
};
class Y
{
public:
Y() {
X x;
throw 44;
};
~Y() {
cout << "Y is destroyed";
};
};
あるサイトからこの RAII の例を入手しましたが、いくつか疑問があります。助けてください。
- x のコンストラクターでは、「メモリ割り当てが失敗した場合」というシナリオを考慮していません。
- ここで、Y のデストラクタは安全です。y の場合、constructor はメモリを割り当てていません。y コンストラクターでもメモリ割り当てを行う必要がある場合はどうなりますか?