对象构造语法
Object Construction Syntax
可能的重复项:
使用 new 和不使用
实例化对象有什么区别 创建对象:带或不带"new"
这两种说法有什么区别
HttpUtil httpUtil;
和
HttpUtil *net = new HttpUtil();
哪一个更好用?
第一个创建一个自动变量。内存管理是自动的,分配速度更快,因为它在堆栈上,没有内存泄漏的可能性。
第二个版本创建一个动态变量 - 您负责清理内存,并且堆上的分配速度较慢。
总是喜欢第一个。如果必须使用动态分配(用于持久生存期或多态行为),请使用智能指针而不是原始指针。
第一条语句在"堆栈"上创建一个名为 httpUtil
的变量 - 这意味着,一旦包含该行的函数完成,该变量就会"超出范围"并被释放(它使用的内存可以自由用于其他内容)。
第二条语句在"堆"上创建一个变量 - 这意味着该变量将保留在内存中,直到您对其调用delete
。在堆上分配变量时,您需要确保始终在某个时候delete
它,否则会出现内存泄漏 - 这是您无法再看到*net
变量的地方,但内存仍然被分配。
第一个是静态创建的对象,您无需担心其破坏。稍后是动态创建的对象,您需要在应用程序终止之前处理其销毁。
第一个是首选,您无需担心内存管理。
相关文章:
- 实例化对象并调用方法,使用单行语法在 C# 或 C++ 中返回值?
- 初始化对象以在 C++08 中作为参数传递的首选语法是什么?
- 访问对象的取消引用值的语法
- 模板堆栈对象的数组;语法
- C 中的对象依赖性.什么是班级组成的语法
- 未知的 C++ 对象实例化语法
- (C++)用于实例化新对象并将其分配给指向相同对象类型的指针的 2D 向量的语法
- C++构造函数中的语法错误 - arugment 是对另一个类中的对象的引用
- 是否可以通过从lambda的引用中返回T型对象,而无需使用尾随返回类型语法
- 对象构造语法
- 使用自定义对象的地图使用MAP?可能是语法问题
- 无法弄清楚将多个对象函数作为单独的线程调用的语法
- 使用大括号初始化C++对象(语法)
- C++中生成对象的语法差异
- 使用std::sort与自定义排序对象和数据类型模板-寻找正确的语法
- 比较类语法帮助中的对象;
- 我们什么时候应该使用括号 ( ) 与初始值设定项 { } 语法来初始化 C++11 中的对象
- 语法错误:使用指向对象的指针调用成员函数指针
- C++中的对象初始化语法
- std::array 作为字段的语法是什么,里面的对象必须使用接受参数的 ctor 构造