基本数据类型简介:C++数据类型完全指南

void类型是所有数据类型中最容易解释的。基本上,void的意思是“无类型”!

void是我们遇到的第一个不完整类型。不完整类型是指已经被声明但尚未定义的类型。编译器知道这种类型的存在,但没有足够的信息来确定为该类型的对象分配多少内存。void是有意设计为不完整的,因为它代表没有类型,因此无法定义。

不完整类型不能被实例化:

void value; // 不行,变量不能用不完整类型void定义

void通常用在几种不同的上下文中。

不返回值的函数

最常见的是,void用于表示一个函数不返回值:

void writeValue(int x) // 这里的void表示没有返回值
{
    std::cout << "The value of x is: " << x << '\n';
    // 没有返回语句,因为这个函数不返回值
}

如果你试图在这样的函数中使用返回语句返回一个值,会导致编译错误:

void noReturn(int x) // 这里的void表示没有返回值
{
    std::cout << "The value of x is: " << x << '\n';

    return 5; // 错误
}

在Visual Studio 2017中,这产生了以下错误:

error C2562: 'noReturn': 'void' function returning a value

过时用法:不接受参数的函数

在C语言中,void用于表示一个函数不接受任何参数:

int getValue(void) // 这里的void表示没有参数
{
    int x{};
    std::cin >> x;

    return x;
}

尽管出于向后兼容的原因,这在C++中可以编译,但这种使用void的方式在C++中被认为是过时的。以下代码是等效的,并且在C++中更受推荐:

int getValue() // 空函数参数列表隐式表示void
{
    int x{};
    std::cin >> x;

    return x;
}

最佳实践

使用空参数列表而不是void来表示函数没有参数。

void的其他用途

在C++中,void关键字还有第三个(更高级的)用途,我们在第19.5节——void指针中会讲到。因为我们还没有讲什么是指针,所以你现在不需要担心这种情况。

让我们继续!

关注公众号,回复"cpp-tutorial"

可领取价值199元的C++学习资料

公众号二维码

扫描上方二维码或搜索"cpp-tutorial"