4

如果我在类中将其作为数据成员读取,是static指整个表达式(数组本身)还是数组的元素?

static const int* array[100];

数组 , 是array静态的,还是数组包含 100 static const int pointers

我假设是前者,但是这个词const改变含义的方式让我想知道是否static也会根据它在表达式中的位置来改变含义。在上面,指针array还不const是数组的元素 const,所以我想知道数组的指针是不是static

4

2 回答 2

4

C++11 7.1.1 存储类说明符:
§5

static 说明符只能应用于变量和函数的名称以及匿名联合 (9.5)。块内不能有静态函数声明,也不能有任何静态函数参数。变量声明中使用的静态说明符将变量声明为具有静态存储持续时间(3.7.1),除非伴随着 thread_local 说明符,它声明变量具有线程存储持续时间 (3.7.2)。静态说明符可用于类成员的声明;9.4 描述了它的作用。对于使用静态说明符声明的名称的链接,请参见 3.5。

那么你在代码示例中声明了什么?

static const int* array[100];

显然,您正在声明变量array因此static适用于array.
不要将存储类说明符cv-qualifiers混淆,前者适用于被声明的变量,而后者适用于类型

于 2013-01-20T07:35:24.327 回答
2

static,externregister应用于您声明的变量,array在此示例中。

因此,您将获得一个包含 100 个指向常量整数的指针的静态数组。

于 2013-01-20T07:30:10.637 回答