关于静态数据成员和成员函数定义的 extern 关键字,C++
Extern keyword on definition of static data members and member functions, C++
C++ 标准是否允许在定义静态数据成员和成员函数时使用 extern
关键字(前提是链接匹配)?例如:
struct A
{
static int a; // external linkage
void f(); // external linkage
};
extern int A::a;
extern void A::f() {}
不允许 extern
关键字作为 class 成员的存储 class 说明符。来自 [dcl.stc]/5:
[...] The extern
specifier cannot be used in the declaration of class members or function parameters. [...]
此外,定义是声明,cf。 [basic.def]/2:
A declaration is a definition unless [rules].
因此,extern
关键字不允许在任何形式的 class 成员声明中用作存储 class 说明符,无论是在 [=23] 的第一个声明中=] 定义或作为外联成员定义的一部分的后续声明。
C++ 标准是否允许在定义静态数据成员和成员函数时使用 extern
关键字(前提是链接匹配)?例如:
struct A
{
static int a; // external linkage
void f(); // external linkage
};
extern int A::a;
extern void A::f() {}
不允许 extern
关键字作为 class 成员的存储 class 说明符。来自 [dcl.stc]/5:
[...] The
extern
specifier cannot be used in the declaration of class members or function parameters. [...]
此外,定义是声明,cf。 [basic.def]/2:
A declaration is a definition unless [rules].
因此,extern
关键字不允许在任何形式的 class 成员声明中用作存储 class 说明符,无论是在 [=23] 的第一个声明中=] 定义或作为外联成员定义的一部分的后续声明。