在下面的例子中资源获取就是初始化“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