【问题标题】:Why use the "new" operator?为什么使用“新”运算符?
【发布时间】:2020-10-20 14:54:39
【问题描述】:

下面的代码是一个示例,用于演示 C++ 中的一些逻辑

int *p = new int;
*p = 5;

cout << *p << endl;

delete p;

【问题讨论】:

  • 没有理由在代码中使用new。听起来你可以使用good C++ book
  • @FrançoisAndrieux:OP 的措辞是正确的,这是 new 运算符。正如您所说,这与名为 operator new()deallocation 函数不同
  • 这段代码看起来像是一个如何从全局存储(通常是 heap)分配对象(在本例中为 int)的示例,为它分配一个值,打印出来,然后删除对象(将分配的内存返回到全局存储)。
  • @François - 这是新表达式中关键字的俗语,标准本身也使用timsong-cpp.github.io/cppwp/n4861/expr.new#4.sentence-3 - 如果有记忆,它曾经在古代的规范文本中,但仅笔记现在仍然存在。
  • @FrançoisAndrieux:技术上是正确的。 new 是一个运算符,还有 new[]co_awaitnoexceptsizeof 以及许多未出现在词法分析器的运算符或标点符号列表中的运算符。

标签: c++ pointers new-operator


【解决方案1】:

在这个特定示例中,没有理由进行动态分配(这是new 提供的)。

这看起来像是一个玩具示例,展示了您将如何动态分配、设置、打印,然后删除int

实际上,除非您要创建更复杂的类型,或者您确实出于某种原因需要在作用域之间共享 int,否则您不会这样做(尽管如此,即使那样, 现在首选智能指针)。

请参阅您的书以获取有关动态分配以及何时(和没有)有用的更多信息。

【讨论】:

  • 您的书将更详细地解释 Naitik。如果你没有,你会想要get one
  • 谢谢!现在我是这方面的专家了
  • 这很快......!
  • 哈哈!其实,当我得到ROHAN SIDDHU下面的答案时,我明白了。我看了很多天后的评论,所以我反应了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 2020-12-12
  • 1970-01-01
  • 2016-06-01
相关资源
最近更新 更多