对象构造语法

Object Construction Syntax

本文关键字:语法 对象      更新时间:2023-10-16

可能的重复项:
使用 new 和不使用
实例化对象有什么区别 创建对象:带或不带"new"

这两种说法有什么区别

 HttpUtil httpUtil;

 HttpUtil *net = new HttpUtil();

哪一个更好用?

第一个创建一个自动变量。内存管理是自动的,分配速度更快,因为它在堆栈上,没有内存泄漏的可能性。

第二个版本创建一个动态变量 - 您负责清理内存,并且堆上的分配速度较慢。

总是喜欢第一个。如果必须使用动态分配(用于持久生存期或多态行为),请使用智能指针而不是原始指针。

第一条语句在"堆栈"上创建一个名为 httpUtil 的变量 - 这意味着,一旦包含该行的函数完成,该变量就会"超出范围"并被释放(它使用的内存可以自由用于其他内容)。

第二条语句在"堆"上创建一个变量 - 这意味着该变量将保留在内存中,直到您对其调用delete。在堆上分配变量时,您需要确保始终在某个时候delete它,否则会出现内存泄漏 - 这是您无法再看到*net变量的地方,但内存仍然被分配。

第一个是静态创建的对象,您无需担心其破坏。稍后是动态创建的对象,您需要在应用程序终止之前处理其销毁。

第一个是首选,您无需担心内存管理。