深度探索C++对象模型第六章 执行其语义学

原创 2002年07月01日 14:19:00

6.1  对象的构造和解构
对象的解构发生在离开当前区域之前,而不是说大括号之前

对象数组:编译器调用一个宁为vec_new()的函数,产生出以class object对象构造而成的数组。
void * vec_new(void * array,      //  数组的起始地址
               size_t elem_size,  //  每个class object的大小
               int elem_cout,     //  数组元素的个数
               void (* construcotr) (void*) ,  // default constructor 的函数指针
               void (* destructor) (void * , char) // default destructor的函数指针
参数array带有的若不是具名数组的地址,就是0。如果时0 ,那么数组江经由应用程序的new运算符,被动态配置于heap中! 载vec_new被调用的过程中,会存放相应的cokkie,保存次内存块的元素个数。注意:是元素个数,而不是整个数组的大笑。因此使用base pointer释放 derived pointer会引起内存泄漏噢!
point knowts[10];  --->vec_new(&knots,sizeof(point),10,&point::point,0)
point knowts[10]={ point(),point(1,2,3) } -->point::point (&knots[0] );
                                             point::point (&knots[1] );
                                             vec_new(&&knowts+3*sizeof(point) , sizeof(point), 7,&point::point ,0)

point3d *p_array = new point3d[10];  
         ---->  point3d * p_array;
                p_array = vec_new ( 0, sizeof(point3d),10,&point::point,&point3d::~point3d);
                                         

释放资源:void*  vec_delete(
                  void * array,       //  数组起始地址
                  size_t  elem_size,  //  每个object 的大小
                  int   elem_count,   //  述组中的元素数目
                  void (*destructor) (void*, char)
                 )

Placement Operator new 的语义
point2w *ptw = new (arena) point2w;
释放方法: ptw->~point2w();

【C++】深度探索C++对象模型之执行期语意学

执行期语意学,即在程序执行时,编译器产生而外的指令调用,确保对象的构造,内存的释放,以及类型转换与临时对象的生成的安全进行。 一、对象的构造和析构 对于类对象的构造,我们应该尽量在需要使用时才进行...
  • zone_programming
  • zone_programming
  • 2015年12月27日 11:10
  • 525

[读书笔记] 深入探索C++对象模型-第六章-执行期语义学(上)

继续整理第六章的内容,关于执行期的一些内容。 这一部分是关于对象的构造和析构的。注:以下部分图片来自于原文 1. 全局对象 C++中全局对象会被放到数据段中,一种可能的全局对象的初始化方法是在程序中最...
  • beyongwang
  • beyongwang
  • 2016年09月28日 22:47
  • 230

深度探索C++对象模型-构造函数语义学

default constructor构建 default constructors在编译器需要的时候产生,区别于程序设计者的需要。以下程序进行说明: class A(public: int v;);...
  • isunn
  • isunn
  • 2015年04月19日 17:29
  • 878

《深度探索c++对象模型》学习笔记

1、c++的布局和存取时间成本?封装并未给c++带来任何的空间或执行期的不良后果,c++在布局和存取时间上的主要额外负担由虚拟化引起。包括: 1)virtual function机制。用以支持一个有...
  • will130
  • will130
  • 2016年05月31日 15:48
  • 270

深度探索c++对象模型(一)_关于对象

原博客地址:http://www.roading.org//develop/cpp/c对象面面观.html 学习C++应该看过不少关于C与C++的口水贴,以及关于各种对比C与C++效率比较的...
  • A_IIIIIIIII_A
  • A_IIIIIIIII_A
  • 2016年01月04日 11:31
  • 568

[读书笔记] 深入探索C++对象模型-第一章《关于对象》

最新在看深入探索C++对象模型(Inside C++ object model),看的同时针对一些之前没有留意或者理解不深的内容整理一下读书笔记,方便之后复习,也希望可以帮助到有同样疑惑的人。 下面是...
  • beyongwang
  • beyongwang
  • 2016年08月21日 21:14
  • 637

《深度探索c++对象模型》读书笔记(一)

本文以下内容为深度探索c++对象模型的笔记 深度探索c++对象模型是Stanley B Lippman的著作,对c++进行了较深层次的探讨。于我而言,这本书解答了我多年(半年)的疑惑: 虚函数是怎...
  • cover_s
  • cover_s
  • 2016年08月30日 15:51
  • 589

C++对象模型简介(二)——《深度探索C++对象模型》精简笔记

叁 多重继承 class A { public: A() {} virtual ~A() {} virtual int foo( ) { return val ...
  • yang_yulei
  • yang_yulei
  • 2013年03月30日 23:48
  • 12125

《深度探索C++对象模型》--2 构造函数语意学

上一篇: 《深度探索C++对象模型》--1 关于对象 1、default constructor的构造操作    C++standard:对于class X ,如果没有任何user-decla...
  • KUAILE123
  • KUAILE123
  • 2014年02月17日 20:40
  • 673

深入探索C++对象模型 第六章 执行语义学

1.        一个区段可能有多个return离开点,所以可能导致一些对象创建后,没有用就需要释放,这就造成了很多浪费。所以建议把object放置在使用它的区段的附近。 2.        C+...
  • shashafbqc
  • shashafbqc
  • 2014年05月09日 20:22
  • 363
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度探索C++对象模型第六章 执行其语义学
举报原因:
原因补充:

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