uint32_t析构函数返回值

时间:2012-08-02 21:01:43

标签: c++

今天我在课堂上看到了这段代码:

static const uint32_t invalid_index = ~uint32_t();

我的问题是,uint32_t析构函数的返回值是什么,为什么它有用?

4 个答案:

答案 0 :(得分:16)

这不是析构函数,而是按位NOT 运算符应用于值初始化 uint32_t

值初始化整数类型为0,因此您将NOT的{​​{1}}按位{。}}。

类似于:

0

答案 1 :(得分:8)

首先,正如许多人已经提到过的,你看到的代码,

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.

答案 2 :(得分:3)

它不是析构函数,它不是二元函数。这里无效索引等于~intint32_t(0)。这是一个32位无符号整数,所有位都设置好。即,0xffffffff。

答案 3 :(得分:1)

它是按位 NOT ,它可用于查找补码(例如~1011 = 0100)或作为尝试找到2s补码的中间步骤(例如[〜] 1011] + 0001 = 0101)。