踏雪有痕-静态对象和动态对象

原创 2007年10月16日 11:36:00




一、   在c++中,对象可以静态分配——即编译器在处理程序源代码时分配,也可以动态分配——即程序执行时调用运行时刻库函数来分配。
    静态与动态内存分配的两个主要区别是:
          1、静态对象是有名字的变量,我们直接对其进行操作。而动态对象是没有名字的变量,我们通过指针间接的对它进行操作。
          2、静态对象的分配和释放由编译器自动处理,程序员不需要做任何事情。相反,动态对象的分配与释放,必须由程序员显示的管理,通过new和delete两个表达式完成。

   
关于第一句话,如何理解呢? 编译器怎么可能在编译时就分配内存?
   

二、对象的动态分配可以通过new表达式的两个版本之一来完成。
    第一个版本用于分配特定类型的单个对象。例如:    
             int  *pint = new int(1024);
    分配一个没有名字的int类型的对象,初始值为1024,然后返回对象在内存中的地址,并用这个地址初始化指            针对象pint。对于动态分配的内存,唯一的访问方式是通过指针间接访问。
    第二个版本是用户分配特定类型和维数的数组。例如:  
             int *pia = new int [4];
    分配一个含有四个整数元素的数组。不幸的是,我们没有办法给动态分配的数组的每个元素显示的制定一个初始值。
    分配动态数组返回值只是一个指针,与分配单一动态对象的返回类型相同。例如,pint和pia的不同之处在于,pia拥有四元素数组的第一个元素的地址,而pint只是简单的包含单一对象的地址。

    可以通过delete的两个版本释放内存。
    单一对象的delete表达式如下:
       delete pint;
    数组形式的delete表达式如下:
       delete  [] pia;

QT 动态创建对象

原文:http://www.mimec.org/node/350 在我继续一系列的Qt数据序列化文章之前,有一个相对重要的需要提及的话题,那就是:基于类名动态创建类对象的能力。         假...
  • xiaoxiaoyusheng2012
  • xiaoxiaoyusheng2012
  • 2015年05月02日 11:57
  • 1832

什么是静态面向对象语言,什么是动态面向对象语言?什么是编译型语言,什么是解释型语言?

1、我们都知道一个程序的运行过程主要分为三个步骤:编译->链接->执行; 2、什么是面向对象语言,这就不多说了; 3、什么是动态语言? 动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在...
  • u010349644
  • u010349644
  • 2015年09月28日 09:26
  • 1607

QML概念及框架--QML动态对象管理

QML提供了很多方法来动态创建和管理QML对象。如Loader、RePeater、ListView、GridView和PathView等元素都支持动态对象管理。对象也可以在C++中被创建和管理,这是混...
  • u012419303
  • u012419303
  • 2015年05月22日 15:11
  • 1326

静态成员函数、this指针、对象指针和动态对象使用小结

先声明一个Time类 ·静态成员函数 ·静态成员函数就是使用 static 关键字声明的成员函数    在类外实现时不加static关键字,只有在类内声明时才加static ·静态成员函数是类的...
  • BLoneliness
  • BLoneliness
  • 2017年11月20日 22:13
  • 109

C++之全局对象、局部对象、静态对象详解

1. 对于全局对象,程序一开始,其构造函数就先被执行(比程序进入点更早);程序即将结束前其析构函数将被执行。 2. 对于局部对象,当对象诞生时,其构造函数被执行;当程序流程将离开该对象的声明周期时,其...
  • Bruce_0712
  • Bruce_0712
  • 2017年02月22日 10:47
  • 1847

前端进阶——静态与动态获取标签的区别

这周三考完最后一门离散数学,考试周告一段落。剩下的时间有零零散散的学习了一些JS的知识,知道了获取标签可以分为静态获取和动态获取。   所谓静态获取也就是通过Id来获取标签,如下: var Box...
  • Victormomo
  • Victormomo
  • 2017年05月12日 17:39
  • 389

【年度总结】——踏雪留痕

光阴如梭,半年转瞬又将成为历史,2015,再回首,苦辣酸甜,个在其中,思考亦多,感慨亦多,收获亦多。“忙并收获着,累并快乐着”成了心曲的主旋律,常鸣耳盼。对我而言,15年的工作是难忘、印记最深的一年。...
  • lxd8731247769
  • lxd8731247769
  • 2016年02月27日 08:05
  • 1183

jsp本质,jsp静态导入与动态导入区别,jsp九个内置对象,jsp传值

jsp本质        1) jsp本质是一种servlet,其页面表现方便,逻辑处理麻烦,而一般的servlet正好相反         2)jsp运行的本质:运行jsp文件,通过se...
  • qq_21033663
  • qq_21033663
  • 2015年11月21日 19:47
  • 517

静态synchronized方法和非静态synchronized方法的锁对象不是同一个

静态synchronized方法的锁是Java文件对应的Class对象,而非静态synchronized方法的锁是是个实例对象,这两个锁并不是同一个,因此静态synchronized方法和非静态syn...
  • ghl_kevin
  • ghl_kevin
  • 2017年05月21日 17:32
  • 323

c++对象的动态创建与释放

1 new和delete基本语法 1)在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除。在C语言中是利用库函数malloc和free来分配和撤销内存空间的。C++提...
  • bbs375
  • bbs375
  • 2016年09月22日 16:52
  • 1706
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:踏雪有痕-静态对象和动态对象
举报原因:
原因补充:

(最多只允许输入30个字)