【问题标题】:auto keyword and storage class in C++ 11C++ 11 中的 auto 关键字和存储类
【发布时间】:2023-03-31 20:30:02
【问题描述】:

C++中的“auto”关键字与存储类有什么关系吗 例如:

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

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

【问题讨论】:

  • auto 在 C++11 中不用作存储类说明符。
  • 上面的代码相当于int *ptr = new int[9];,但是现代C++不喜欢使用(或滥用)newdelete,你应该重新考虑你的应用程序vectorarray, shared_ptr, unique_ptr, weak_ptr.

标签: c++11


【解决方案1】:

直到c++11auto 用于指定automatic存储持续时间。但是由于c++11,它唯一的意思就是自动推导出变量的类型。它与变量本身的存储类无关。

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

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

请查看this link 了解更多详情以及扣款流程的运作方式。

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

【讨论】:

  • 缺少分号?
猜你喜欢
  • 1970-01-01
  • 2012-08-24
  • 2021-02-18
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
相关资源
最近更新 更多