声明

声明在程序中引入新的名称。 本部分阐述的主题包括声明的以下用途。

除引入新名称外,声明还指定编译器如何解释标识符。 声明不会自动保留与标识符相关联的存储。 定义将保留存储。

备注

大多数声明也可作为定义。不作为定义的声明包括不带有成员列表的类声明,以及不带有函数体的函数声明。

声明可能是下列项之一:

[ decl-specifiers ] [ declarator-list ] ;

function-definition

linkage-specification

template-specification

别名模板

explicit-template-instantiation

explicit-template-specialization

namespace-definition

namespace-alias-definition

alias-declaration

using-declaration

using-directive

asm-definition

声明的 decl-specifiers 部分显示为可选部分;但只有在类的类型或枚举的声明中才可省略它。

declarator-list 部分中的声明符包含要声明的名称。 尽管 declarator-list 显示为可选,但只有在函数的声明或定义中才可省略它。

备注

函数的声明通常称为原型。原型提供有关参数的类型信息和函数的返回类型。此外,原型使编译器可以执行正确的转换并确保类型安全。

名称被视为在紧靠其声明符之后,但位于其(可选)初始值设定项之前的位置进行声明。 有关详细信息,请参阅声明位置

在范围内进行声明。 范围控制已声明的名称的可见性和已定义的对象的持续时间(如果有)。 有关范围规则如何与声明进行交互的详细信息,请参阅范围

对象声明也可作为定义,除非它包含存储类说明符中所介绍的 extern 存储类说明符。 函数声明也可作为定义,除非它为原型。 原型是没指有定义的函数体的函数头。 对象的定义会对该对象导致存储的分配以及相应的初始化。

相关主题

有关 function-definition 的信息,请参阅 C++ 函数定义

有关 linkage-specification 的信息,请参阅链接规范

有关 template-specification、explicit-template-instantiation 以及 explicit-template-specialization 的信息,请参阅模板

有关 namespace-definition 和 namespace-alias-definition 的信息,请参阅命名空间 (C++)

有关 asm-definition 的信息,请参阅 __asm

请参见

其他资源

C++ 语言参考