关于 `new` 和 `delete` 的使用,以及 Stroustrup 的建议...
他说过类似这样的话(但不是完全一样,这是我的笔记):
"一个经验法则是,`new` 应该出现在构造函数和类似操作中,`delete` 应该出现在析构函数中。此外,`new` 经常用于资源句柄的参数中。否则,避免使用 `new` 和 `delete`,应该使用资源句柄 (智能指针) 代替。"
我想知道有经验的 C++11 开发者是否真正应用了这个建议。
我的印象是,哇,这似乎是一个非常酷的规则要遵循。但后来我有些怀疑,就像对于任何通用规则一样。最终你仍然会在必要的地方使用 `new` 和 `delete`。但也许这个规则是一个好的指南,我不知道。
他说过类似这样的话(但不是完全一样,这是我的笔记):
"一个经验法则是,`new` 应该出现在构造函数和类似操作中,`delete` 应该出现在析构函数中。此外,`new` 经常用于资源句柄的参数中。否则,避免使用 `new` 和 `delete`,应该使用资源句柄 (智能指针) 代替。"
我想知道有经验的 C++11 开发者是否真正应用了这个建议。
我的印象是,哇,这似乎是一个非常酷的规则要遵循。但后来我有些怀疑,就像对于任何通用规则一样。最终你仍然会在必要的地方使用 `new` 和 `delete`。但也许这个规则是一个好的指南,我不知道。
Foo(const Bar&)
时,我总是问自己:“如果一个函数接受一个Foo
参数,而我传递一个Bar
对象,我希望它能够默默地工作,还是更可能是程序员的疏忽/误解?”通常情况下,后者才是真正的情况。隐式转换对于可变到const迭代器等情况很好,但大多数情况下,我发现我不想要它们。 - Angew is no longer proud of SOnew
和delete
的贬低,也许将(de)allocation从库函数推广到运算符是一个错误... - CTMacUser