继续自己写文章的记叙风格,先把不熟悉的东西感性的介绍下,后面深入研究后再 介绍多一些。
auto是什么
很简单的说就是,在c++11中,某些人就是为了偷懒,对于某些变量的声明变的不耐烦, 想即时使用。这一点和我们经常用的解释性编程语言具有很大的相似性。比如,我们的 python shell都是这种用法,c++11的auto就在感官上做到了这一点。
int main(){
auto str = "yubo and chun \n";
std::cout << str << endl;
}
这里我们就可以清楚了,auto可以节省显式地声明类型了,这一点尤其在自定义的很多 类 容器时具有巨大的帮助
下面这一个例子加强了这种概念:
#include <iostream>
using namespace std;
template<typename T1, typename T2>
float Sum(T1& t1, T2& t2){
auto a = t1 + t2;
return a;
}
int main(){
int a = 3;
long b = 5;
float c = 1.0f;
float d = 2.3f;
auto e = Sum<int, long>(a, b);
auto f = Sum<float, float>(c, d);
cout << e << endl << f << endl;
}
上面这段程序有一个目前我不了解的地方就是,如果定义Sum的返回值类型为int,则f返回int(这一点是对的,那么,怎么可以让函数返回值使用模板呢)
auto的局限
任何东西都有两面性,auto也不例外,目前我使用auto的情况也不是特别多,所以关于这一点,我暂且放下,等到我有更深的认识后再补充上。