[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的主要内容,如果未能解决你的问题,请参考以下文章