c++ auto的使用及其注意事项

在C++中,auto是一个类型说明符,用于自动类型推导。当编译器看到auto时,它会根据初始化表达式自动为变量选择正确的类型。这种特性在C++11及以后的版本中引入,并在C++代码中广泛使用,因为它可以帮助减少代码的冗余和提高可读性

使用(以下两点类似)
1.简化代码

当变量的类型很明显,或者类型名称较长时,使用auto可以使代码更简洁。

cpp 复制代码
class YiGeHenChangDeLeiMing {
public:
	//......
	int m;
};
int main()
{
	YiGeHenChangDeLeiMing yg[10] = {0};
	auto temp = yg[0];//auto为YiGeHenChangDeLeiMing
	return 0;
}
2.处理复杂类型
cpp 复制代码
int main()
{
	map<int, string>m;
	m[1] = "xiaoliu";//map、set可以通过[]来创建元素进行赋值,但是成员函数at()不行
    //m.at(2) = "zhongliu"; //error
	m.insert(make_pair(2, "zhongliu"));
	//map<int, string>::iterator it = m.begin();
	auto it = m.begin();//使用auto推导出map<int, string>::iterator,简化代码
	cout << m.at(1) << endl;//成员函数at(key)访问容器元素
	for (; it != m.end(); it++)
	{
		cout << "key is:" << it->first << " value is:" << it->second << endl;
	}
	return 0;
}
3.减少类型错误

使用auto可以减少由于显式指定错误类型而导致的编译错误。

4.与C++11及以后版本的其他特性协同工作

auto与范围for循环(基于范围的for循环)、lambda表达式等C++11及以后版本引入的特性协同工作得很好

使用auto的注意事项:
1.可读性

虽然auto可以提高代码的可读性,但在某些情况下,如果变量的类型不明显,过度使用auto可能会使代码难以阅读和理解。

2.类型安全:

auto并不会检查类型是否安全,它只会根据初始化表达式推导类型。因此,如果初始化表达式有误,auto也会推导出错误的类型。

3.避免过度使用

尽管auto很方便,但过度使用可能会使代码难以理解和维护。在一些情况下,明确指定类型可能更为清晰和有益。

4.与C++11之前的代码不兼容

如果你的代码需要与C++11之前的代码兼容,那么使用auto可能会导致问题,因为auto是C++11引入的特性。

5.调试

由于auto会隐藏变量的实际类型,这可能会在某些情况下导致调试困难。然而,现代的调试工具通常可以显示auto变量的实际类型。

相关推荐
未知陨落8 分钟前
数据结构——二叉搜索树
开发语言·数据结构·c++·二叉搜索树
大波V59 分钟前
设计模式-参考的雷丰阳老师直播课
java·开发语言·设计模式
无敌最俊朗@22 分钟前
unity3d————接口基础知识点
开发语言·c#
一丝晨光1 小时前
gcc 1.c和g++ 1.c编译阶段有什么区别?如何知道g++编译默认会定义_GNU_SOURCE?
c语言·开发语言·c++·gnu·clang·gcc·g++
南城花随雪。1 小时前
Spring框架之装饰者模式 (Decorator Pattern)
java·开发语言·装饰器模式
究极无敌暴龙战神X1 小时前
前端学习之ES6+
开发语言·javascript·ecmascript
虞书欣的61 小时前
Python小游戏24——小恐龙躲避游戏
开发语言·python·游戏·小程序·pygame
FHYAAAX1 小时前
【机器学习】任务十:从函数分析到机器学习应用与BP神经网络
开发语言·python
汉克老师2 小时前
GESP4级考试语法知识(贪心算法(四))
开发语言·c++·算法·贪心算法·图论·1024程序员节
爱吃生蚝的于勒2 小时前
C语言最简单的扫雷实现(解析加原码)
c语言·开发语言·学习·计算机网络·算法·游戏程序·关卡设计