我对用C++创建对象有疑问。
假设我有一个名为 Employee 的类,其中包含一些数据成员和方法。
现在在 main 函数中,有时我看到开发人员使用不同的方法来创建对象,例如
Employee emp1; // 1)
Employee emp2 = new Employee // 2)
我的疑问是我们什么时候应该使用案例 1,什么时候使用选项 2。
最佳答案
1) Employee emp1;
这会在堆栈中创建一个默认构造的员工。它的生命周期一直持续到它超出范围。
2) Employee emp2 = new Employee
这可能甚至无法编译,我猜你的意思是:
2) Employee *emp2 = new Employee
这会在堆上创建一个默认构造的员工,并将其地址分配给员工指针。它的生命周期一直持续到 delete
对其调用为止。
它们是两个完全不同的东西。在您了解更多之前,您可能希望坚持使用第一个版本。了解更多信息后,您也应该坚持使用第一个版本,除非您知道并理解不这样做的原因。
关于C++ 对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814935/