Java 支持 RAII/确定性破坏吗?
我使用 Java 已经至少 5 年了,那时,任何时候你想分配一个需要清理的对象(例如套接字、数据库句柄),你都必须记住添加一个 finally 阻塞并调用其中…
关于智能指针及其不可避免的不确定性的问题
在过去的两年里,我在我的项目中广泛使用了智能指针(确切地说是 boost::shared_ptr)。 我理解并欣赏它们的好处,而且我通常非常喜欢它们。 但我使用…
好还是坏 C++ 习语 - 纯粹用于构造函数/析构函数的对象?
我有一些类,除了它们的构造函数/析构函数之外什么都不做。 这是一个 class BusyCursor { private: Cursor oldCursor_ public: BusyCursor() { oldCur…
是否存在“最终”出现的情况? 构造在 C++ 中有用吗?
Bjarne Stroustrup 在他的 C++ 风格和技术常见问题解答中写道,强调我的: 因为 C++ 支持一种几乎总是更好的替代方案:“资源获取即初始化”技术(TC++…
shared_ptr:它是用来做什么的
我在代码中大量使用了 boost::scoped_ptr ,这很棒,但我目前正在使用到处都使用共享指针的软件,我想知道我是否遗漏了一些东西。 据我所知,只有当不…
Ruby 中的 RAII(或者,如何在 Ruby 中管理资源)
我知道这是设计使然,你无法控制对象被销毁时会发生什么。 我还知道将某些类方法定义为终结器。 然而,C++ 的 RAII 的 ruby 习惯用法是这样的吗(…
Java 中的 RAII...资源处理总是那么丑陋吗?
我刚刚玩了一下Java文件系统API,并得到了以下函数,用于复制二进制文件。 原始来源来自网络,但我添加了 try/catch/finally 子句,以确保如果发生错…
为什么.NET 中没有 RAII?
作为主要的 C++ 开发人员,Java 和 .NET 中缺少 RAII(资源获取即初始化)总是困扰着我。 事实上,清理的责任从类编写者转移到了其使用者(通过 try f…
如果您不应该在析构函数中抛出异常,那么如何处理其中的错误?
大多数人说永远从析构函数中抛出异常 - 这样做会导致未定义的行为。 Stroustrup 指出“向量析构函数显式地调用每个元素的析构函数。这意味着如果元素…
使用 ScopeGuard 真的会带来更好的代码吗?
我多年前偶然发现了 Andrei Alexandrescu 和 Petru Marginean 撰写的这篇文章,其中介绍并讨论了称为 ScopeGuard 的实用程序类,用于编写异常安全代码…