一 using 类型别名
类似 typedef
using MYINT = int;
typedef double MYDOUBLE;
MYINT main()
{
MYINT a = 10;
cout << "a = " << a << endl;
MYDOUBLE b = 10.1;
cout << "b = " << b << endl;
system("pause");
return 0;
}
二 auto 自动推导类型
auto的用法与注意事项
- auto定义的变量必须有初始化值:因为编译器是通过初始化的值来判断变量的类型的
- 声明多条语句时,变量的类型要一致
using MYINT = int;
typedef double MYDOUBLE;
MYINT main()
{
auto a = 10;
cout << "a = " << a << endl;
auto b = 10.1;
cout << "b = " << b << endl;
vector<int> vec;
auto it = vec.begin();//数组迭代器
auto func = []() { //lamda函数
cout << "func" << endl;
};
func();
system("pause");
return 0;
}
三 decltype 类型指示符
decltype选择并返回操作数的数据类型,可以不初始化值,主要用在一些泛型编程中。
using MYINT = int;
typedef double MYDOUBLE;
MYINT main()
{
{
int a = 10;
decltype(a) b;
cout << "sizeof(b)" << sizeof(b) << endl;
}
{
char *p;
decltype(p) d;
cout << "sizeof(d)" << sizeof(d) << endl;
}
{//如果decltype处理的是解引用操作,则decltype将得到引用类型
char c = 'c', *p = &c;
decltype(*p) d = c;//d的类型为引用,应用必须初始化
}
{//如果decltype处理的类型加上多层括号,则返回的是引用
int i = 10;
decltype(i) x = i;//x为int类型
decltype((i)) y = i;//y为int&类型 //必须初始化
}
system("pause");
return 0;
}
64位int4字节,指针8字节