摘要:
Q: 我们需要在Dll中new一个class或者struct的实例,通过接口把这个实例传给了主程序(调用dll的程序),最后这个实例的释放(delete)是由主程序来执行的,这时我们的问题出现了,vs.net抛出一个debug模式下的异常,是在delete函数中。后来我试了另外一种情况,即在主程序中new的实例在dll中delete也会有相同的问题。哪位大侠知道为什么? ... 阅读全文
posted @ 2008-06-15 23:10
能巴
阅读(2060)
评论(0)
推荐(0)
摘要:
通常有compiler将其分解成为多步构造。 Constructor 被分解后应该是这样的: 1)对于一个most derived类,初始化vbptr,并调用virtual base 的构造函数。 2)调用non-virtual base classes 的构造函数。 3)调用data members的构造函数 4)初始化vfptr。 5)执行用户写在constructor中的代码。 Des... 阅读全文
posted @ 2008-06-15 22:22
能巴
阅读(209)
评论(0)
推荐(0)
摘要:
在构造和析构期间不要调用虚函数,因为这样的调用不会匹配到当前执行的构造函数或析构函数所属的类的更深的派生层次。 假设你有一套模拟股票处理的类层次结构,例如,购入流程,出售流程等。对这样的处理来说可以核查是非常重要的,所以随时会创建一个 Transaction 对象,将这个创建记录在核查日志中是一个适当的要求。下面是一个看起来似乎合理的解决问题的方法: ... 阅读全文
posted @ 2008-06-15 22:05
能巴
阅读(268)
评论(0)
推荐(0)
摘要:
编译器调用虚拟函数的汇编码(参考think in c++): push funparam ;先将函数参数压栈 push si ;将this指针压栈,以确保在当前类上操作 mov bx,word ptr[si] ;因为vc++编译器将vptr放在类的第一个位置上,所以bx内为vptr call word ptr[bx+n] ;调用虚拟函数。n = 所调用的虚拟函数在对应 vt... 阅读全文
posted @ 2008-06-15 21:51
能巴
阅读(225)
评论(0)
推荐(0)
摘要:
自己不是计算机系的,没有一帮同学可以交流职场经验。一直苦恼于此。因为,总感觉因为这个原因,导致自己不能对软件行业看得更清楚,更了解。 今天突然想明白了。还是那句老话“不能改变环境,只能适应它。”网络资源,要会挖掘。 我决定从点滴做起,从论坛、博客等资源入手,作为获取前人经验的途径。 抱怨、想象,无助于解决任何问题。行动,要行动起来! 阅读全文
posted @ 2008-06-15 20:13
能巴
阅读(161)
评论(0)
推荐(0)

浙公网安备 33010602011771号