[C++11]自动类型推导auto

Posted Wecccccccc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[C++11]自动类型推导auto相关的知识,希望对你有一定的参考价值。

1.auto

C++11中,auto并不代表一种实际的数据类型,只是一个类型声明的"占位符",auto并不是万能的在任意场景下都能够推导出变量的实际类型,使用auto声明的变量必须要进行初始化,以让编译器推导出它的实际类型,在编译时将auto占位符替换成真正的类型。

语法:

auto 变量名 = 变量值;

代码如下:

#include <iostream>
using namespace std;

int main()
{
	auto x = 3.14;// double
	auto y = 520;// int
	auto z = 'a';// char
	auto nb;// error
	auto double nb1;// 语法错误,不能修改数据类型
}

1.当变量不是指针或者引用类型时,推导的结果中不会保留const,volatile关键字。

2.当变量是指针或者引用类型时,推导的结果中会保留const,volatile关键字。

代码如下:

#include <iostream>
using namespace std;

int main()
{
	int tmp = 110;
	auto *a = &tmp;//auto -> int
	auto b = &tmp;//auto -> int*
	auto &c = tmp;//auto -> int
	auto d = tmp;// auto ->int

	//有const修饰
	int tmp1 = 250;
	const auto a1 = tmp;// auto -> int
	auto a2 = a1;/*    auto -> int 
	当变量不是指针或者引用类型时,推导的结果中不会保留const,volatile关键字。*/
	
	const auto & a3 = tmp;//const已经写出来了,就要保留下来,auto -> int
	auto & a4 = a3;/*a3 -> const int &          auto -> const int 
	当变量是指针或者引用类型时,推导的结果中会保留const,volatile关键字。*/
 
	auto * pt4 = &a1;//pt4 -> const int *   auto ->const int 

	return 0;


}

以上是关于[C++11]自动类型推导auto的主要内容,如果未能解决你的问题,请参考以下文章

C++11 学习笔记-类型推导

C++学习笔记——auto/decltype 自动推导类型

C++学习笔记——auto/decltype 自动推导类型

C++学习笔记——auto/decltype 自动推导类型

C++学习笔记——auto/decltype 自动推导类型

C11简洁之道:类型推导