C++将变量类型传递给函数

use*_*976 33 c++ variables types

如何将变量类型传递给函数?像这样:

void foo(type){
    cout << sizeof(type);
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*eld 39

您不能传递类似的类型,因为类型不是对象.它们在运行时不存在.相反,您需要一个模板,它允许您在编译时实例化具有不同类型的函数:

template <typename T>
void foo() {
  cout << sizeof(T);
}
Run Code Online (Sandbox Code Playgroud)

例如,您可以使用此函数调用此函数foo<int>().它将实例化一个T替换为的函数版本int.查找功能模板.

  • 仅当您不关心编译速度时才这样做。 (2认同)
  • @TankorSmash 正确的井规模是重点,只要它的项目和规模足够小,你就不需要真正担心它。然而,每个小项目都会变成一个大项目,所以以防万一任何 FNG 读到,只是想让他们意识到编译时间的权衡。 (2认同)

mic*_*ion 14

正如约瑟夫曼斯菲尔德指出的那样,功能模板可以满足您的需求.在某些情况下,向函数添加参数可能是有意义的,因此您不必显式指定模板参数:

template <typename T>
void foo(T) {
  cout << sizeof(T)
}
Run Code Online (Sandbox Code Playgroud)

这允许你将函数调用为foo(x),其中x是类型T的变量.无参数版本必须被调用为foo<T>().