x > y > new T 的可能含义:语法
Possible meaning of x > y > new T : syntax
我正在阅读 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
的东西?如果是,是什么?
我认为这是错误的片段。应该是
_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.
我正在阅读 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
的东西?如果是,是什么?
我认为这是错误的片段。应该是
_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.