首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

对象创造及按地址传递

2013-02-15 
对象创建及按地址传递typeTMyDateclassMonth,Day,Year:integerprocedureSetValue(m,d,y:integer)functi

对象创建及按地址传递
type 
    TMyDate   =   class 
        Month,   Day,   Year:   integer; 
        procedure   SetValue(m,   d,   y:   integer); 
        function   LeapYear:   boolean; 
end; 

 
-------------------程序1---------------------------
T.procedureA;
begin
      Var   MyDate:   TMyDate;
     try
         procedureB(var MyDate:TMydate);
     finally
          MyDate.free;
     end;
end;
T.proceudreB(var MyDate:TMydate);
begin
     MyDate:=TMydate.create();
     ......
end;
-------------------程序1---------------------------

-------------------程序2---------------------------
T.procedureA;
begin
      Var   MyDate:   TMyDate;
      MyDate:=TMydate.create();
     try
         procedureB(var MyDate:TMydate);
     finally
          MyDate.free;
     end;
end;
T.proceudreB(var MyDate:TMydate);
begin
          ......
end;
-------------------程序2---------------------------

请问各位大侠,程序1与程序2的效果是否一样?
程序1中Var   MyDate:   TMyDate定义有没有分配地址空间?MyDate是否能成功释放?谢谢
[解决办法]
效果一样,至于是否能成功释放要看过程怎么写;用第2种吧,在那里创建,就在那里释放
[解决办法]
1、效果一样。
2、释放没问题。
一般写法用第2种。
理解对解、指针就不难明白了。
[解决办法]
var定义时只是分配了一个4B大的指针,即MyDate,事实上MyDate只是一个Pointer,它即将指向真正的类实例空间,而类实例空间只有在create时才分配。。就是这样

热点排行