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 上, 这会导致以下错误:
image


已弃用:不带参数的函数

在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 节——空指针中讲解。由于我们尚未介绍指针的概念,目前不必担心这种情况。

继续前进吧!

posted @ 2026-02-13 07:13  游翔  阅读(1)  评论(0)    收藏  举报