为什么创建类的时候要用new?
来源:互联网 发布:大数据考证 编辑:程序博客网 时间:2024/06/08 16:13
为什么要有new?为什么要动态创建对象?为什么有时候不用new,有时候又用new
这就涉及到自动存储和动态存储了。
Sprite* sp = new Sprite();
自动存储(自动变量、局部变量)
自动存储,也叫做自动变量,比如int num = 10; 这个num就属于自动变量。
所谓自动,代表它会自动申请内存,也会自动释放内存,自动变量是保存在栈里的(后进先出)。
如果大家觉得很难理解,那么,换一个名称——局部变量。
这个好理解了吧?局部变量在离开函数,或者离开它所属的代码块之后,就会被释放。
而Value v = Value(100); 、int num = 10; 这些都是局部变量,一旦离开函数或者离开它的作用域,就会被释放。
比如把int num; 作为成员变量,那么,在这个类被释放的时候,num变量也会被释放。
这就是为什么我们在创建了这么多int、float等基本类型的变量之后,不需要去释放它们。
因为它们是自动被释放的。
动态存储
自动变量有很大的好处,那就是不需要我们去管内存方面的事情,但是,有时候我们不希望有这样的自动释放内存。
我们希望自己去控制什么时候释放对象,这时候就要用到new了。
我们都知道,new了之后,如果不调用相应delete的话,申请到的内存空间是永远都不会被释放的。
这就是动态存储了,我们自己来申请内存,自己来释放内存。
当然,内存泄露的罪魁祸首之一也正是new~!
因为正常人都会有疏忽的时候,并且当程序足够庞大、逻辑足够复杂的时候,有些地方调用了new,却疏忽了delete是再正常不过了。
都是node类型的指针,前者也就是node *p程序结束后会自动删除,后者new node不会自动删除,会用到delete函数删除
- 为什么创建类的时候要用new?
- 为什么创建类的时候要用new?
- 创建类的时候使用new和不使用new
- C++——创建类的时候用new与不用new 的区别(转)
- 创建并且new一个类的时候,发生了什么?
- New一个子类对象的时候是否创建了父类的对象
- android中引用方法的时候,有时候要new一个对象才能引用,有时候直接.方法就可以了,为什么
- android中引用方法的时候,有时候要new一个对象才能引用,有时候直接.方法就可以了,为什么
- 为什么在计算信息熵的时候要用log?
- 为什么要重载new?
- 我们在创建对象的时候,为什么要调用构造方法并且要给构造方法传入实参???
- Android创建项目时候为什么是RelativeLayout
- Java中new类的时候初始化的顺序
- NEW date()获取时间的时候要用getFullYear()而不是getYear
- C++ 用new和不用new创建类对象的区别
- C++ 对象和实例的区别,以及用new和不用new创建类对象区别
- C++用new和不用new创建类对象的区别
- C++ 对象和实例的区别,以及用new和不用new创建类对象区别
- 数组和集合的相互转换
- 计算机视觉相关领域的网站链接
- Elasticsearch Blueprints.pdf 英文原版 免费下载
- 即时通讯-语音录制及播放
- Spotfire使用经验-在Cross Table(Pivot Table,透视表)中动态计算比例
- 为什么创建类的时候要用new?
- React.js: web开发者的14个工具和资源
- Redis-在.NET中的使用
- Exynos4412异步串口通信及实验
- Beginning Elastic Stack.pdf 英文原版 免费下载
- 728. Self Dividing Numbers
- 多系统引导
- Ubuntu16.04 阿里源
- 中国大学MOOC课程《Python语言程序设计》课后练习第一周