用汇编的眼光看c++(之模板函数)(二)

2014-11-24 12:47:59 · 作者: · 浏览: 4
a ecx,[ebp+10h] 00402175 call @ILT+25(data::~data) (0040101e)
  0040217A mov eax,dword ptr [ebp+8]我们发现compare模板语句下面构建了很多汇编语句,有一些冗长,我们可以大略介绍一下:(1) 开头调用call 0x0040103C函数就是调用重载运算符函数,[ebp-18h]表示即将被复制的是a数据还是b数据
  (2) 比较返回结果后,开始复制数据,具体见0x402157,其中临时变量[ebp-14h]和临时变量[ebp-4]的操作可以忽略
  (3) 函数返回前,对临时变量a和b进行析构处理,见代码0x402169和代码0x402175.
  注意:
  (1)编写模板函数前先保证自己的函数是编写正确的
  (2)模板函数的优先级低于非模板函数
  (3)模板函数的类型可以是自定义类型,也可以是c、c++语言的基本类型
  (4)模板函数的使用经常和类的算术运算符混合使用,注意技巧
  (5)模板函数中涉及指针部分的内容,务必注意