呵呵,感觉学习挺乱的,怎么到处是新东西

构造器和析构器同类中定义的方法一样,使用相同的调用规则,但是构造器和析构器有一个附加传递一个Boolean参数(呵呵,奇怪吧,编译器的作为,在类创建前设断点,VIEW CPU,呵呵,看到DL没),用来表示构造器或析构器的上下文关系(context)。
如果构造器读到这个值是FALSE表示构造器是通过实例对象或使用inherited关键字来调用的。在这情况下构造器象一个普通的方法。如果是TRUE表示是通过类引用调用的。在这情况下,构造器创建一个类的实例也就是Self,返回一个新创建的对象的引用在EAX。
同理析构器。。。如果是TRUE,那么析构器在返回前释放类的实例Self的内存。
呵呵,为什么会使用我们上面说的DL寄存器呢,这是因为register调用规则。如果是Pascal规则,那么将在所有其他参数前压入栈。如果是cdecl,stdcall,safecall规则,那么将在Self参数后压入栈。(push dl)
因为DL寄存器表示是否在调用栈中构造器或析构器是最外层,所以必须在退出前恢复DL,这样BeforeDestruction或者AfterConstruction可以被安全调用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值