WEB开发网
开发学院软件开发VC VC++ 语言中函数和类函数调用过程 阅读

VC++ 语言中函数和类函数调用过程

 2008-11-12 19:28:08 来源:WEB开发网   
核心提示: d. 如果是类调用方法与之一样,区别是 ECX -> 指向对象,VC++ 语言中函数和类函数调用过程(2),具体如下所示void XXX::SetValue(LONG f_Val){ecx -> XXX对象f_Val 获取方式为 mov eax, [ebp + 8]}a.Set

d. 如果是类调用方法与之一样,区别是 ECX -> 指向对象,具体如下所示

  void XXX::SetValue(LONG f_Val)
  {
  ecx -> XXX对象
  f_Val 获取方式为 mov eax, [ebp + 8]
  }

a.SetValue(xxx); 调用方式为

  push xxx
  mov ecx,a
  call XXX::SetValue
  void XXX::SetValue(std::string f_Val)
  {
  ecx -> XXX对象
  f_Val 获取方式为 lea eax, [ebp + 8]
  }

a.SetValue(xxx);的调用方式为

esp -> 生成xxx的临时对象 std::string

  mov ecx,a
  call XXX::SetValue
  void XXX::SetValue(std::string &f_Val)
  {
  ecx -> XXX对象
  f_Val 获取方式为 mov eax, [ebp + 8]
  }

a.SetValue(xxx);的调用方式为

  lea eax, xxx
  push eax
  mov ecx,a
  call XXX::SetValue

2.有返回值的函数调用方法同上,区别就在返回值的处理上

a. 参数为普通变量,即: int long ulong 和指针

  LONG SetValue(LONG f_Val)
  {
  f_Val 获取方式为 mov eax, [ebp + 8]
  }

b = SetValue(xxx); 的调用方式为

  push xxx
  call SetValue
  mov b, eax

b. 参数为类对象,如:CString

  std::string SetValue(std::string f_Val)
  {
  f_Val 获取方式为 lea eax, [ebp + 8]
  }

Tags:VC 函数

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接