[英]uint32_t destructor return value
今天我在课堂上看到了这段代码:
static const uint32_t invalid_index = ~uint32_t();
我的问题是, uint32_t
析构函数的返回值是什么,为什么它有用?
这不是析构函数,而是应用于值初始化的 uint32_t
的按位NOT
运算符。
值初始化的整数类型为0
,因此您将取0
的按位NOT
。
相近:
uint32_t x = uint32_t(); // 32 0's in binary form
uint32_t y = ~x; // 32 1's in binary form
首先,正如许多人已经提到过的,你看到的代码,
static const uint32_t invalid_index = ~uint32_t();
不是析构函数调用,而是按位“not” ~
,应用于类型的默认值uint32_t()
,即~(uint32_t(0))
。
现在问你的问题,
我的问题是,uint32_t析构函数的返回值是什么,为什么它有用?
伪析构函数的返回类型(它不是真正的析构函数,只是一个与析构函数调用具有相同符号的无操作操作)是void
,它主要用于不知道类型的泛型编程。
例:
uint32_t x;
x.~uint32_t(); // Silly but valid, a pseudo-destructor call.
它不是析构函数,它不是二元函数。 这里无效索引等于~intint32_t(0)。 这是一个32位无符号整数,所有位都设置好。 即,0xffffffff。
它是按位NOT ,它可用于找到1的补码(例如~1011 = 0100)或作为尝试找到2s补码的中间步骤(例如[~1011] + 0001 = 0101)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.