繁体   English   中英

uint32_t析构函数返回值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM