是否支持RAII?

时间:2013-09-20 13:00:58

标签: c++ raii

上次我看到Stroustrup先生在C ++中谈论RAII的视频。我想知道更多,并找到了这个页面:

https://www.securecoding.cert.org/confluence/display/cplusplus/MEM44-CPP.+Do+not+leak+resources+when+handling+exceptions

这个MEM44-CPP只是对下一个C ++规范的提议还是已经可用?我怎么知道我的编译工具支持RAII?

2 个答案:

答案 0 :(得分:9)

RAII(资源获取是初始化)是C ++固有的东西,或者更确切地说是时可用于缓解内存处理问题的东西。

每个C ++编译器都“支持”RAII。

答案 1 :(得分:4)

RAII是一种基于析构函数的设计模式 只要保留一个对象的范围就调用,这个, 无论离开范围的原因。作为设计 模式,它的使用仅限于具有的语言 每当对象的范围被调用时调用的析构函数 左:C ++和(我认为)Ada 95,虽然可能有其他人。

因为它是一种设计模式,所以与它无关 编译器,除了,它需要有析构函数 在合适的时间召集。这是C ++的一个特性 语言从最早期开始,虽然早期的编译器 经常弄错。我知道的最后一个编译器 然而,在这方面的问题是Visual Studio中的C ++ 2008年(有时候它无法称之为析构函数) 有)。大多数其他编译器自中期以来一直很好 1990' S