C++ 在C++;在实践中,我们可以把空洞视为一种类型吗?
一些教程将void定义为一种类型,但实际上它只是一个关键字,一个表示“无类型”的占位符。因此,如果我们说void实际上不是一种类型,对吗?C++标准说void是一种无法完成的不完整类型(与其他可以完成的不完整类型不同)。C++ 在C++;在实践中,我们可以把空洞视为一种类型吗?,c++,C++,一些教程将void定义为一种类型,但实际上它只是一个关键字,一个表示“无类型”的占位符。因此,如果我们说void实际上不是一种类型,对吗?C++标准说void是一种无法完成的不完整类型(与其他可以完成的不完整类型不同)。 这意味着您不能将sizeof运算符应用于void,不能声明类型为void的变量,但可以使用指向不完整类型的指针,并声明返回该类型的函数。如果声明返回类型为void,则函数没有返回。这是不正确的。关键字>代码> Vult可以用于C++需要类型的许多地方,例如在模板参数中。它在语法
这意味着您不能将
sizeof
运算符应用于void
,不能声明类型为void
的变量,但可以使用指向不完整类型的指针,并声明返回该类型的函数。如果声明返回类型为void,则函数没有返回。这是不正确的。关键字>代码> Vult可以用于C++需要类型的许多地方,例如在模板参数中。它在语法上不是占位符。当然,模板作者仍然可以决定将void
视为“无类型”的意思;这是一种常见的解释
throw
表达式显式具有void
类型,即使此处未使用关键字void
函数调用表达式可以具有
void
类型,而void
函数中的return
语句可以采用void
表达式。从理论和实践上看,它的a类型就像一个复制品。这只是一个非常特别的问题,因为它没有价值。这是否回答了你的问题?它是类型系统的一部分,列在标准中的内置类型中。当然,它是一个不规则的类型,但仍然是一个类型。在类型系统中有一个无人居住的类型是很有用的。它在算术上类似于零。在一些情况下,void Foo(){return void();}
可能是一个有用的构造。这些情况主要是模板和宏,但了解语法很有用。