Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 接受每种类型参数的函数_C++_Variables - Fatal编程技术网

C++ 接受每种类型参数的函数

C++ 接受每种类型参数的函数,c++,variables,C++,Variables,假设我想创建一个函数,该函数不能传递给它的值,但我不知道它是int,还是string,或者 比如: void print(info) { cout << info; } print(5); print("text"); 无效打印(信息){ cout一种选择是使用函数模板 template<typename Arg> void print(const Arg& arg) { std::cout << arg; } 模板 无效打印(常量

假设我想创建一个函数,该函数不能传递给它的值,但我不知道它是
int
,还是
string
,或者

比如:

void print(info) {
   cout << info;
}

print(5);
print("text");
无效打印(信息){

cout一种选择是使用函数模板

template<typename Arg>
void print(const Arg& arg)
{
    std::cout << arg;
}
模板
无效打印(常量参数和参数)
{

std::cout您可以使用函数模板执行此操作:

template <typename T>
void print( const T& info)
{
   std::cout << info ;
}
模板
无效打印(常量T和信息)
{

std::cout我们可以使用模板来完成这项工作

template <typename T>
void print(const T& t)
{
    std::cout << t <<std::endl;
}

int main()
{
    print(12);
    print("123456");
}
模板
无效打印(常量T&T)
{

std::cout为什么
Arg&&
,顺便说一句?函数模板是正确的术语。@minitech,这是一个完美的转发习惯用法,但是
const&
在这里更合适,因为参数没有修改,并且没有
std::forward
@Potatoswatter Oops。非常正确!感谢您指出“很快,您就可以使用它了。”hnically写为
auto print=[](const auto&info){可以注意到这个函数对任何类型都是开放的,甚至是用户定义的。因此,您的工作是确保
info
可以是
std::ostream:]的参数:operator@Jeffrey说得好,谢谢你指出这一点。