C++ 对象创建

标签 c++ oop

我对用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/

相关文章:

c++ - C/C++ 中的 C 风格无符号字符解析和操作 - 段错误

oop - 建模和责任

python - 安排训练和测试机器学习

c - 有没有不是C++的 "C with classes"语言?

php - 关于 PHP 中的 OO 和类的几个问题

c++ - 如何制作存储在数组中的STL对象的拷贝?

c++ - 无法反序列化 boost 图对象

c++ - 搜索和排序 vector 的最快方法

c++ - 是否可以在 GA144 上运行仿真的 C 代码?

javascript - typescript :使用装饰器时的类型推断