使用new关键字创建对象和不使用的区别
-
使用new关键字创建的对象被创建到堆空间;
e.g. Student *stu = new Student(); -
不使用new关键字创建的对象被创建到栈空间;
e.g. Student stu(); -
使用new关键字创建的对象,需要手动执行delete调用析构函数,否则会造成内存泄漏。
-
不使用new关键字创建的对象可以不手动调用析构函数,使用完之后析构函数会自动执行。类似于java中的局部变量(int long double之类的)
-
对于只定义类指针的情况,如Student *stu = NULL: 在使用new关键字之前,不会为该类型的对象分配空间。这种情况不需要调用析构函数。
-
不使用new关键字时,会直接分配空间。
-
使用new关键字创建的对象可以作为函数的参数,返回值
-
没使用new关键字创建的对象是否可以作为函数的参数,返回值?(未验证)