为什么经验丰富的 C++ 开发者建议避免使用 `new`?
你好!我正在从 Java 转向 C++,遇到了一些困惑。在 Java 中,我们经常使用 `new` 来创建对象,这是标准做法。但阅读论坛和文章时,我发现许多经验丰富的 C++ 开发者建议“尽量减少使用 `new`”。老实说,这听起来很奇怪。
以下是我按照 Java 习惯编写的示例:
```cpp
#include
#include
class Person {
public:
Person(const std::string& name) : name_(name) {}
void greet() const { std::cout << "Hello, I'm " << name_ << std::endl; }
private:
std::string name_;
};
int main() {
Person* p = new Person("Alice");
p->greet();
// 忘记 delete 了?还是需要在某处调用?
Person* p2 = new Person("Bob");
p2->greet();
// 如果我想把 p2 传递给函数呢?
// 如何正确释放内存?
return 0;
}
```
问题在于我不明白什么时候 `new` 确实是必需的,什么时候可以用创建