【发布时间】:2017-12-04 17:19:35
【问题描述】:
您不能声明void 变量:
void fn() {
void a; // ill-formed
}
然而这个编译:
void fn() {
void(); // a void object?
}
void() 是什么意思?它有什么用处?为什么void a; 格式不正确,而void() 正常?
void fn() {
void a = void(); // ill-formed
}
【问题讨论】:
-
基本上什么都没有或没有类型
-
@sara 你应该仔细看看这里的上下文。
-
虽然
void()很奇怪,但它与您可以将表达式转换为void的事实基本一致,如在语句(void)5;中(有时这样做是为了明确表示返回值被忽略)。在任何一种情况下,表达式都会产生一个 void 值。您不能声明void类型的变量,因为它是不完整的类型。 -
@geza 对不完整类型的主要限制是“不应将对象定义为具有不完整类型。”这并不排除不完整类型的表达。您甚至可以取消引用指向不完整类型的指针(尽管它必须是指向对象类型的指针,因此不包括 void),并且只要在取消引用的对象上不发生左值到右值的转换,它就是合法的。跨度>
标签: c++ void variable-declaration