在 C++ 中使用 C 不好吗?
很多人告诉我,在 C++ 中使用 C 是不好的,因为它不安全,而且需要更多的内存管理。我一直告诉他们,只要你知道自己在做什么,并且删除“new”并释放“malloc”,那么 C 就不是问题。
我目前在一个论坛上,关于 std::string
与 char*
的争论正在发生。有人说分配一个简单的 char*
内存块效率更高,只要释放它就可以了。另一方面,我们有人说 std::string
更好,因为它不涉及内存管理,但效率较低。
所以这里的主要问题是:
- 混合 C/C++ 不好吗?编写 C++ 代码时是否应该只使用 100% C++?
任何答案将不胜感激!
最佳答案
I keep telling them that as long as you know what your doing, and you delete your new's and free your malloc's then C isn't a problem.
这是真的;如果您非常小心并确保手动清理东西,那么这不是问题。但是你真的有时间去做吗?每次调用 new
都会抛出 std::bad_alloc
。您是否总是捕获每个可以抛出的异常并手动清理任何资源?
我冒险猜测答案是否定的,因为编写这样的代码非常乏味,而且很难绝对确定这样编写的代码是正确的,即使在很少见的情况下失败。
如果答案是"is",那么您为什么要浪费这么多时间来担心资源管理?范围绑定(bind)资源管理(SBRM;通常称为资源获取即初始化 (RAII))之类的 C++ 习惯用法和标准模板库之类的库可帮助您更轻松地编写正确的代码。没必要的时候,为什么要艰难地做事?
Should you ONLY use 100% C++ when your coding C++?
是的,但是如果有一个 C 库可以满足您的需要,或者如果您有想要使用的遗留 C 代码,您当然可以使用该代码;一定要小心。通常,与 C 代码互操作的最简洁方法是围绕它编写 C++ 包装器。
关于c++ - 在 C++ 代码中使用/混合 C?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4025869/