哈喽各位铁汁们好啊,我是博主鸽芷咕《C++干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的城市有没有这种实惠又全面的零食基地呢?C++ 本身作为一门篇底层的一种语言,世面的免费课程大多都没有教明白。所以本篇专栏的内容全是干货让大家从底层了解C++,把更多的知识由抽象到简单通俗易懂。
C++98中auto是一个存储类型说明符,表示变量是局部自动存储类型。但是在局部域中定义变量时,默认就是自动存储类型,因此C++98中auto的用法显得并不太有价值。
C++11中,auto不再是存储类型说明符,而是一种实现"自动类型推导"的关键字。也就是说,当你使用auto定义一个变量时,编译器会根据变量的初始化表达式自动推导出该变量的类型。
比如:
auto x = 5; // x的类型会被推导为int
auto y = 3.14; // y的类型会被推导为double
C++11中auto的使用需要满足两个条件:
在C++11中引入了decltype
关键字,它可以用来获取表达式的类型。与auto
不同,decltype
不会进行类型推导,而是直接采用表达式的类型。
使用decltype
的一般形式是:
decltype(expression) variable;
这里,expression
是一个合法的表达式,decltype
会根据表达式推导出其类型,并将该类型应用到变量的声明中。
比如:
int x = 5;
decltype(x) y = 10; // y的类型是int
std::vector<int> v = {
1, 2, 3};
decltype(v.begin()) it = v.begin(); // it的类型是std::vector<int>::iterator
关键字
decltype
将变量的类型声明为表达式指定的类型。
// decltype的一些使用使用场景
template<class T1, class T2>
void F(T1 t1, T2 t2)
{
decltype(t1 * t2) ret;
cout << typeid(ret).name() << endl;
}
int main()
{
const int x = 1