C ++ 11中的auto关键字和存储类

时间:2018-02-15 13:13:24

标签: c++11

" auto" C ++中的关键字与存储类有关 例如:

void foo() {
  auto ptr = new int[9]
}

上面指向int的指针是自动(堆栈)还是动态(堆)?

1 个答案:

答案 0 :(得分:3)

c++11之前,auto用于指定automatic存储持续时间。但是,因为c++11它的唯一含义是自动推导出变量的类型。它与变量本身的存储类无关。

在您的情况下,ptr是指向堆上位置的局部变量(int * ptr)。您可以通过明确地编写变量类型来获得相同的效果,如下所示:

void foo() {
  int* ptr = new int[9];
}

请查看this link了解更多详情以及扣减过程的工作原理。

http://en.cppreference.com/w/cpp/language/auto