【问题标题】:Possible meaning of x > y > new T : syntaxx > y > new T 的可能含义:语法
【发布时间】:2015-08-24 11:28:12
【问题描述】:

我正在阅读 this article 关于最有用的 C++11 功能的内容,我在最后一节中碰到了这段代码:

 if(_size != copy._size)
 {
    _buffer = nullptr;
    _size = copy._size;
    _buffer = _size > 0 > new T[_size] : nullptr;
 }

我习惯将最后一行视为(_size > 0) > other_Value,但在这种情况下,正确的操作数是new 声明。我真的无法理解它的意义。另外,: nullptr 指的是什么?有没有初始化为nullptr 的东西?如果是,是什么?

【问题讨论】:

标签: c++ c++11 comparison comparison-operators


【解决方案1】:

我认为,这是错误的 sn-p。应该是

_buffer = _size > 0 ? new T[_size] : nullptr;

这基本上是三元运算符。如果_size > 0,则为大小为_size 的数组T 分配内存,否则nullptr 将分配给_buffer。而且它不是 C++11 的特性,因为在 C++98 中它可以只是

_buffer = _size > 0 ? new T[_size] : 0; // or NULL, or (void*)0.

【讨论】:

  • 天哪,现在一切都说得通了。谢谢。这简直把我逼疯了。
  • 由于在大多数(美国)键盘上? 就在> 的右侧,这是一个非常容易想象的错字。
  • @RDGuida 如果你是该网站的注册用户,我建议你留下一个错误报告。
猜你喜欢
  • 2020-01-04
  • 2018-07-21
  • 1970-01-01
  • 2010-12-09
  • 2020-07-16
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多