在下面的例子中資源獲取就是初始化「RAII」
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的這個例子和AVE有些疑惑。請幫忙。
- 在x的構造函數中,我們沒有考慮「如果內存分配失敗」的情況。
- 這裏的Y的析構函數是安全的,因爲在y構造函數沒有分配任何內存。如果我們需要在y構造函數中做一些內存分配呢?
請問您可以使用重新格式化代碼嗎?將其分成單獨的行,用間距選擇它,然後單擊代碼示例按鈕(大引號旁邊的1和0)。 – 2010-03-20 17:31:22
你如何定義「考慮」?如果分配失敗,它會拋出,所以在任何情況下都不會將「X」置於半包狀態。 – 2010-03-20 17:32:28
我修復了你的代碼。一般來說,如果你發佈的代碼甚至不是有效的C++,那麼得到答案將會變得更加困難。 – 2010-03-20 17:35:54