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

Possible meaning of x > y > new T : syntax

本文关键字:gt 语法      更新时间:2023-10-16

我正在阅读这篇关于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.