代码如下:
type
TMyObject=class(TObject)
public
constructor Create(nSN : Integer);reintroduce;//重载的构造函数
destructor Destroy();override;//重载的析构函数
end ;constructor TMyObject.Create(nUserSN : Integer);
begin
inherited Create();
//构造对象
....
自己的构造代码
....
end;destructor TMyObject.Destroy;
begin
//析构对象
.....
自己的解构代码
..... inherited Destroy();
end;外部调用代码是动态创建.
obj:=TMyObject.Create(Integer);
使用完毕后
obj.Free;经我分步跟踪,发现,构造函数可以执行(就是可以跟踪进去)
但是无论如何不会执行我重写的destroy函数,为什么????
就算我在我重载的destroy设置断点,但是程序根本没有执行到那里来,对象free了就完毕,好像没有调用我自己写的destroy??怎么办?
难道要显式调用destroy函数??Free方法不是要调该函数的么?
type
TMyObject=class(TObject)
public
constructor Create(nSN : Integer);reintroduce;//重载的构造函数
destructor Destroy();override;//重载的析构函数
end ;constructor TMyObject.Create(nUserSN : Integer);
begin
inherited Create();
//构造对象
....
自己的构造代码
....
end;destructor TMyObject.Destroy;
begin
//析构对象
.....
自己的解构代码
..... inherited Destroy();
end;外部调用代码是动态创建.
obj:=TMyObject.Create(Integer);
使用完毕后
obj.Free;经我分步跟踪,发现,构造函数可以执行(就是可以跟踪进去)
但是无论如何不会执行我重写的destroy函数,为什么????
就算我在我重载的destroy设置断点,但是程序根本没有执行到那里来,对象free了就完毕,好像没有调用我自己写的destroy??怎么办?
难道要显式调用destroy函数??Free方法不是要调该函数的么?
解决方案 »
- 结构体或者类如何用到属性编辑器中
- pchar 指示的Char数组 如何转换成byte格式的数据?
- 在保存到数据库之前,怎样检验DBGrid里数据的是否为空,怎样检验是否所有列都为空?
- 系统如何支持多个数据库系统?
- 怎么样才能使 richedit 透明? 100 分
- 如何知道一个小数除0.5后是否为整数?如7.5/0.5为整数,7/0.5就不为整数了?
- 求助:我想用程序重启Win2K![ 遇到了麻烦 ExitWindowsEx 无法实现] 绝对高手请进:!!详情...
- Delphi 如何获取 U盘 插入与拔出,还有盘符。
- 请问怎么才能EXCEL中的数据存到SQL数据库中?
- 那位老兄有售楼软件的软件方案(带图片),高分致谢!!分少了再加!谢谢
- 请教:twebbrowser中使用IHTMLDocument2接口的问题!!
- 写在form得oncreate里的代码是不是在编译的时候执行的?如果不是,是不是就只执行一次的?
if Self <> nil then
Self.Destroy;如过你在哪里设置了obj:= nil的话当然是不能执行Destroy了。