4-2 void
空类型void是最容易解释的数据类型。本质上,空类型意味着“无类型”!
void是我们遇到的首个不完整类型示例。所谓不完整类型incomplete type,是指已被声明但尚未定义的类型。编译器虽知晓此类类型的存在,却缺乏足够信息来确定应为该类型对象分配多少内存。void的刻意不完整性源于其代表着类型的缺失,因此无法被定义。
不完整类型无法被实例化:
void value; // won't work, variables can't be defined with incomplete type void
void通常在多种不同语境中使用。
不返回值的函数
最常见的是使用 void 表示函数不返回值:
void writeValue(int x) // void here means no return value
{
std::cout << "The value of x is: " << x << '\n';
// no return statement, because this function doesn't return a value
}
若在该函数中使用 return 语句尝试返回值,将导致编译错误:
void noReturn(int x) // void here means no return value
{
std::cout << "The value of x is: " << x << '\n';
return 5; // error
}
在 Visual Studio 2017 上,这会导致以下错误:
error C2562: 'noReturn': 'void' function returning a value
我:在clang 21 上, 这会导致以下错误:
已弃用:不带参数的函数
在C语言中,使用void来表示函数不带任何参数:
int getValue(void) // void here means no parameters
{
int x{};
std::cin >> x;
return x;
}
尽管出于向后兼容性考虑,此代码在C++中仍可编译通过,但这种使用关键字void的方式在C++中已被视为弃用。以下代码具有相同效果,且在C++中更受推荐:
int getValue() // empty function parameters is an implicit void
{
int x{};
std::cin >> x;
return x;
}
最佳实践
使用空参数列表代替 void 来表示函数没有参数。
void 的其他用法
在 C++ 中,void 关键字还有第三种(更高级的)用法,我们将在第 19.5 节——空指针中讲解。由于我们尚未介绍指针的概念,目前不必担心这种情况。
继续前进吧!


浙公网安备 33010602011771号