auto
1、自动类型推导:auto i = 5;
在泛型类型变量定义的时候,冗长的类型名称就可以使用auto来替代了,确实省事了不少:
#include <iostream>
#include <unordered_map>
int main ()
{
std::unordered_map<std::string,std::string> mymap;
for ( auto iter = mymap.begin(); iter != mymap.end(); ++iter )
return 0;
}
auto iter = mymap.begin(); iter != mymap.end(); ++iter )
return 0;
}
2、不同泛型类型统一表达:auto ret = func<T>();
#include <iostream>
class Foo
{
public:
static int get(void) { return 0; }
};
class Bar
{
public:
static const char* get(void) { return "0"; }
};
template <class A>
void func(void)
{
auto val = A::get();
//...#1
}
int main(void)
{
func<Foo>();
func<Bar>();
system("pause");
return 0;
}
以上例子中get方法根据用户的选择,可能返回int,也可能返回char,auto val都能接收这些值得返回。这个情景的用法感觉意义不是很大。#1:总之在最后都要显示地对val进行对应类型的处理,编写代码时并不知道用户要使用哪个类型,后续处理起来反而觉得不太方便了。