c++ auto关键字皮毛
c++中auto是根据自动推导变量类型的关键字,它可以很好的简化代码.下面就来简单了解一下它.
auto简单认识
先举一个简单的使用例子.
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
void A(int a)
{
cout << "int" << endl;
}
void A(double a)
{
cout << "double" << endl;
}
int main()
{
auto a = 1;
auto b = 1.11;
A(a);
A(b);
return 0;
}
上述代码的输出结果如下,可以看出auto自动推导出a和b的类型.
也正是因为auto会根据初始化的数或表达式推导类型,所以在定义auto变量时必须初始化.并且在使用auto时不可以在一行定义多个类型不同的变量.如下
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
int main()
{
auto a1 = 1, a2 = 2;
cout << a1 << " " << a2 << endl;
//auto b1 = 1, b2 = 1.11; err
return 0;
}
auto与指针联合
auto可以自己识别指针类型也可以用auto*来定义指针变量,但是后者初始化的类型必须为指针,不可以为非指针类型.
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
int main()
{
int a = 1;
auto b = &a;
auto c = a;//相当于又定义了一个int的变量c,并把它的值初始化为a的值1
auto* d = &a;
//auto* e = a; err
cout << b << " " << d << endl;
cout << a << " " << c << endl;
*b = 2;
cout << a << " " << c << endl;
cout << *b << " " << *d << endl;
*d = 3;
cout << a << " " << c << endl;
cout << *b << " " << *d << endl;
return 0;
}
暂时我只接触了这点皮毛~等以后深入学习后也会对auto进行补充.