【发布时间】:2014-03-31 23:41:00
【问题描述】:
假设我有一个简单的 Movie 对象,它只跟踪名称、长度和成本的一些数据成员。
如果在我的驱动程序文件中,我会创建一个 Movie 对象。哪个是首选和区别:
Movie firstMovie = Movie("Titanic", 126, 13.2);
和
Movie* firstMovie = new Movie("Titanic", 126, 13.2);
我认为后者是如果我们需要访问这个对象,如果要执行它所在的方法。换句话说,如果创建的第一个对象像在方法中那样初始化,那么一旦方法执行完毕,我们将失去任何连接,因为没有为它分配内存。我的思维方式正确吗?这不是家庭作业,更多的是自从我从 Java 过渡以来一直潜伏的问题。谢谢。
【问题讨论】:
-
第二段代码需要
Movie* firstMovie = new Movie("Titanic", 126, 13.2);才能编译。 -
谢谢,我会编辑那个更改。
-
第一个将通过堆栈分配。而第二个将在堆上分配。如果您已通过堆分配它,则必须手动删除它。在堆栈上,删除将自动发生。
标签: c++ oop object initialization