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说得好,谢谢你指出这一点。