在 C++ 中使用 C 不好?
许多人告诉我,在 C++ 中使用 C 很糟糕,因为它不安全,而且需要更多的内存管理。我一直告诉他们,只要您知道自己在做什么,并且删除“新”并释放“malloc”,那么C就不是问题。
我目前在一个论坛上,关于 std::string
与 char*
的争论正在发生。有人说分配一个简单的 char*
内存块效率更高,只要解除分配就可以了。另一方面,我们有人说 std::string
更好,因为它不涉及内存管理但效率较低。
所以这里的主要问题是:
- 混合 C/C++ 不好?在编写 C++ 代码时是否应该只使用 100% C++?
任何答案将不胜感激!
原文由 Brad 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是真实的;如果您非常小心并确保手动清理东西,那么这不是问题。但是你真的有时间去做吗?每次调用
new
都可以抛出std::bad_alloc
。您是否 总是 捕获 每个 可以抛出的异常并手动清理任何资源?我会冒险猜测答案是否定的,因为编写这样的代码非常乏味,而且很难绝对确定这样编写的代码是正确的,即使在极少数失败的情况下也是如此。
如果答案是“是”,那么您为什么要浪费这么多时间来担心资源管理?范围绑定资源管理(SBRM;通常称为资源获取即初始化 (RAII))之类的 C++ 习惯用法和标准模板库之类的库可帮助您更轻松地编写正确的代码。当你不需要的时候,为什么要以艰难的方式做事?
是的,但是如果有一个 C 库可以满足您的需要,或者如果您有想要使用的遗留 C 代码,您当然可以使用该代码;一定要小心。与 C 代码互操作的最简洁的方法通常是围绕它编写一个 C++ 包装器。