RDG*_*ida 2 c++ comparison comparison-operators c++11
我正在阅读这篇关于最有用的C++ 11特性的文章,我在上一节中碰到了这一块代码:
if(_size != copy._size)
{
_buffer = nullptr;
_size = copy._size;
_buffer = _size > 0 > new T[_size] : nullptr;
}
Run Code Online (Sandbox Code Playgroud)
我习惯于考虑最后一行,(_size > 0) > other_Value但在这种情况下,右操作数是一个new声明.我真的无法理解它的意义.另外,: nullptr参考什么?有没有初始化的东西nullptr?如果有,那是什么?
For*_*veR 10
我想,这是错误的片段.它应该是
_buffer = _size > 0 ? new T[_size] : nullptr;
Run Code Online (Sandbox Code Playgroud)
这基本上是三元运算符.如果_size> 0,则将_size分配大小为T的数组的内存,在其他情况下nullptr将分配给_buffer.而且它不是C++ 11的功能,因为在C++ 98中它可以是公正的
_buffer = _size > 0 ? new T[_size] : 0; // or NULL, or (void*)0.
Run Code Online (Sandbox Code Playgroud)