W
wr960204
Unregistered / Unconfirmed
GUEST, unregistred user!
著书的话概念当然要清晰.
大家不能接受把整形指针说成是结构指针,为什么可以容忍把方法指针说成是函数指针?
最起码的严谨性要有的,否则就不叫Object Pascal程序员了。
如果这本书是给初学者看那就不应该让初学者产生错误的基本概念,如果是给高手看的那更不应该去犯低级错误。
首先方法指针和函数指针的长度就不一样。
Type
TEvent=procedure () of Object;
TProc=procedure();
showmessage('方法指针的长度是:'+Inttostr(SizeOf(TEvent)));
showmessage('函数指针的长度是:'+Inttostr(SizeOf(TProc)));
正如wk_knife所说的,函数指针是指向函数的32位指针,占4个字节。
过程的指针结构如下
PProc = ^TProc;//过程指针
TProc = record
Code: Pointer;//指向过程的代码
end;
方法指针是指向一个结构。方法的指针结构如下
PMethod = ^TMethod;//方法指针
TMethod = record
Code: Pointer;//指向方法的代码
Data: Pointer;//指向对象的数据
end;
我记得Nicrosoft曾经扩展过一句名言“真正的程序员用C++,聪明的程序员用Delphi,真正聪明的程序员用C++来理解Delphi”
而这里我想他一定也是用C++来理解Delphi了。
在ANSI C++中指向类成员函数的指针确实是指向类的函数的指针,也就是一个32bit指针或者一个vtbl的索引;
Delphi则是指向对象的方法的指针,实现上是一个对象指针加上一个方法指针组成的,结构如上面说的。
但是C++Builer为了兼容Delphi增加了一个__closure关键字,和of object效果相同,但与标准c++的不同。
我不知道“一个过客”是谁,如此无礼?是Nicrosoft的绝对崇拜者还是他本人,你所要做的不过是想混淆概念
极力攻击异己。难道不允许有不同的声音存在么?如果不是来讨论学术而是来攻击人身的,请不要再来。
回到理智的立场,我是为讨论技术而来的。
大家不能接受把整形指针说成是结构指针,为什么可以容忍把方法指针说成是函数指针?
最起码的严谨性要有的,否则就不叫Object Pascal程序员了。
如果这本书是给初学者看那就不应该让初学者产生错误的基本概念,如果是给高手看的那更不应该去犯低级错误。
首先方法指针和函数指针的长度就不一样。
Type
TEvent=procedure () of Object;
TProc=procedure();
showmessage('方法指针的长度是:'+Inttostr(SizeOf(TEvent)));
showmessage('函数指针的长度是:'+Inttostr(SizeOf(TProc)));
正如wk_knife所说的,函数指针是指向函数的32位指针,占4个字节。
过程的指针结构如下
PProc = ^TProc;//过程指针
TProc = record
Code: Pointer;//指向过程的代码
end;
方法指针是指向一个结构。方法的指针结构如下
PMethod = ^TMethod;//方法指针
TMethod = record
Code: Pointer;//指向方法的代码
Data: Pointer;//指向对象的数据
end;
我记得Nicrosoft曾经扩展过一句名言“真正的程序员用C++,聪明的程序员用Delphi,真正聪明的程序员用C++来理解Delphi”
而这里我想他一定也是用C++来理解Delphi了。
在ANSI C++中指向类成员函数的指针确实是指向类的函数的指针,也就是一个32bit指针或者一个vtbl的索引;
Delphi则是指向对象的方法的指针,实现上是一个对象指针加上一个方法指针组成的,结构如上面说的。
但是C++Builer为了兼容Delphi增加了一个__closure关键字,和of object效果相同,但与标准c++的不同。
我不知道“一个过客”是谁,如此无礼?是Nicrosoft的绝对崇拜者还是他本人,你所要做的不过是想混淆概念
极力攻击异己。难道不允许有不同的声音存在么?如果不是来讨论学术而是来攻击人身的,请不要再来。
回到理智的立场,我是为讨论技术而来的。