vimer linux kernel 爱好者

c++11--auto特性

2020-05-31

继续自己写文章的记叙风格,先把不熟悉的东西感性的介绍下,后面深入研究后再 介绍多一些。

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的情况也不是特别多,所以关于这一点,我暂且放下,等到我有更深的认识后再补充上。


Comments

Content