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

请教一般把VC中的类编程delphi中的类会有哪些注意事项

2012-02-20 
请问一般把VC中的类编程delphi中的类会有哪些注意事项?如题,最近把一些C++的类转换为delphi的类,请问,有什

请问一般把VC中的类编程delphi中的类会有哪些注意事项?
如题,最近把一些C++的类转换为delphi的类,请问,有什么注意事项,最好有些例子哈。劳驾了。。

[解决办法]
注意类型的对应。
[解决办法]
1. 注意数据类型
2. C语言中有多重继承,但是Delphi却只能单根继承
3. C里面的友元,Delphi里面没有吧
4. C里面有宏,Delphi也没有
5. 继承的访问方式,也有一些不同
这个不好举例吧,只好具体问题具体对待了,LZ加油。
[解决办法]
DELPHI 不提供多继承, 那你就定多几次嘛...
例如: class BaseA, class BaseB

class C: public BaseA public BaseB 这样的话, 在DELPHI就写成


BaseB = class public BaseA
end;

C = class public BaseB
end;

这样C就有B也有A的内容了吧, 只是单纯要多写一次而已.

DELPHI和VC, 类的写法在表面上注意的内容是比较少的. 但实现底层是极大不相同的.

1. VC下, 虚表地址都是this指针下的第一个地址值, DELPHI下不是, 这样导致Interface类的相互使用时, 会有不同的方式, VC只要把类强制变换成Interface即可, DELPHI下, 虽然写法一样, 但内里DELPHI的接口地址跟实例的地址是不相同的.

2. VC下, 函数默认是cdelc调用方式, DELPHI默认是fastcall, 并且DELPHI的fastcall别以为跟VC的fastcall就相同了, 完全不同的, DELPHI的self是用EAX传递的, VC的this, 好像是用ECX传递的. 最安全的做法是都采用stdcall

3. VC下, 类函数指针有使用, 要自己显式声明和显式调用(用(this->)XXX), DELPHI的成员函数, 都可以由TMethod代替, 用法当然是DELPHI的方便得多了. 但要实现VC和DELPHI的成员函数能够相互调用, 则必须要写stdcall. 不用stdcall 得要自己写汇编代码调用函数.

4. DELPHI下, 要注意其RTTI信息的编译, DELPHI的self指针下, 除了虚表, 还有RTTI信息表, 还有类继承信息表, 这些信息, 会有编译选项可以开启或关闭, 默认下开启, 这样导致VC里面某些类的使用会造成不同的写法.

热点排行