【发布时间】:2017-02-21 03:29:22
【问题描述】:
在 RAII 中,持有资源是类不变量是什么意思?
在RAII's Wikipedia page 上确实声明:
在 RAII 中,持有资源是类不变量,并且与对象生命周期相关联:资源分配(获取)在对象创建(特别是初始化)期间由构造函数完成,而资源释放(释放)在对象期间完成由析构函数销毁(特别是最终化)。
以D language 为例,我们可以很容易地理解Class Invariant 的含义:
class Date {
int day;
int hour;
invariant() {
assert(1 <= day && day <= 31);
assert(0 <= hour && hour < 24);
}
}
它是一个约束,指的是类字段可以保持什么才能被视为有效状态。然而,持有资源意味着什么?是不是意味着资源是我的,从constructor的constructor一直到destructor的销毁都是我的?
【问题讨论】:
-
对于其他人,我发现这个链接更好地解释了 RAII:tomdalling.com/blog/software-design/…
标签: c++ raii invariants