x的可能含义> y>新T:语法

时间:2015-08-24 11:28:13

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

我正在阅读有关最有用的C ++ 11功能的LibGDX,我在上一节中遇到了这一段代码:

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

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

1 个答案:

答案 0 :(得分:10)

我认为,这是错误的代码段。它应该是

_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.