当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 我试了加上text和schema文件后仍然不行,不知何故?请教高手告知。 ......
 ·简单的问题    »显示摘要«
    摘要: 可能我现在半梦半醒所以提出一个简单的问题 如果我在程序中定义一个 datastore ids_1 调用完后用不用destroy ids_1; 如果我在程序中定义一个 omobject ole_uo1 调用完后用不用destroy ole_1; 如果我在程序中定义一个 dwobject dw_uo1 调用完后用不用destroy dw_uo1; ......


大家进来看看这两个程序,有什么不同的

一:  
  #include   <iostream>  
  using   namespace   std;  
   
  class   Class   {  
  public:  
  virtual   void   fun()   {   cout   <<   "Class::fun"   <<   endl;   }  
  };  
   
  int   main()   {  
  Class   objClass;  
   
   
  cout   <<   "Address   of   virtual   pointer   "   <<   (int*)(&objClass+0)   <<   endl;  
  cout   <<   "Value   at   virtual   pointer   "   <<   (int*)*(int*)(&objClass+0)   <<   endl;  
  return   0;  
  }  
   
  二:  
  #include   <iostream>  
  using   namespace   std;  
   
  class   Class   {  
  public:  
  virtual   void   fun()   {   cout   <<   "Class::fun"   <<   endl;   }  
  };  
   
  int   main()   {  
  Class   objClass;  
   
   
  cout   <<   "Address   of   virtual   pointer   "   <<   (int*)(&objClass+0)   <<   endl;  
  cout   <<   "Value   at   virtual   pointer   "   <<   *(int*)(&objClass+0)   <<   endl;  
  return   0;  
  }  
   
 

NO.1   作者: TianGuangZao

http://www.codeproject.com/atl/ATL_UnderTheHood_.asp  
  原文出自这里对吧!  
   
  (int*)*(int*)(&objClass+0),从右向左读,解释如下:  
  (&objClass+0)    
  取得虚表指针   VPTR(指向虚拟表首地址)   的地址。  
   
  (int*)(&objClass+0)  
  因为虚表指针占用一个   int   的长度,所以这里通过加   (int   *)   把地址   cast   成整数指针的技巧得到   VPTR。  
   
  *(int*)(&objClass+0)  
  VPTR   指向一张虚拟表   VTABLE,VTABLE就相当于一个数组,每个元素保存的是类中定义的虚函数地址。  
  *   表示取   VPTR   所指对象的值,这样就得到了   VTABLE   中第一个虚函数得地址,因为它位于表的开头。  
   
  (int*)*(int*)(&objClass+0)  
  同样我们通过   (int   *)   cast到整数指针的小把戏得到指向该虚函数得指针。


    摘要: 《剑侠情缘2》制作备忘录 2001-08-16 西山居工作室 裘新   裘新写出的稿子真是与众不同,语言简单,没有煽情的语句,整个就像游戏制作的项目计划书。不过从文章中 我们却可以窥见一个游戏从构想到完成的全过程。    1、剑侠情缘2开发大事记   1997年04月,剑侠情缘上市,市场反应热烈。   1997年07月,剑侠情缘2开始立项策划。   1997年10月,剑侠情缘2策划案第一稿......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE