Avatar ·

为什么经验丰富的 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` 确实是必需的,什么时候可以用创建