1

还有一次我被指针逻辑困住了。以下代码使用函数 typedef tOutFunction。它为这个函数指针定义了一个全局变量和一个 set 方法。

为什么

SetOutFunction(OutFunction);

SetOutFunction(&OutFunction);

两者都工作?自动转换如何在这个地方工作。还是其中之一是错误的并且它是偶然起作用的?

#include <iostream>

typedef int (*tOutFunction)(const char*);

int OutFunction(const char* out)
{
  std::cout << "OutFunction:" << out << "\n";
  return 10;
}

tOutFunction out__ = 0;

void SetOutFunction(tOutFunction outFunc)
{
  out__ = outFunc;
}

int main()
{
  SetOutFunction(OutFunction);
  std::cout << out__("Without Ref") << "\n";

  SetOutFunction(&OutFunction);
  std::cout << out__("With Ref") << "\n";

  return 0;
}

也在这里尝试过:http: //codepad.org/yfxj2QAo

4

0 回答 0