新手求助!类的数组型成员变量的长度问题
我是一个C++ 初学者,今天在学习语法时,写了如下一段代码,发现了一些问题,在此向各位请教,不胜感激。问题如下:
(1) C++语法是否允许类内数组型成员变量的 [ ] 运算符内什么都不写?从代码执行结果来看,是可以的,但是并没有找到相关说明;
(2)为什么静态的类型的(1)中所指的数组在初始化后,sizeof计算长度是初始化后的长度,而非静态类型的就是0;
(3)不论是初始化后的静态类型的数组成员变量还是普通的数组成员变量,都可以越界访问并且不报错?
#include <iostream>
using namespace std;
class A
{
public:
static int arr[];
static int arr2[10];
int arr1[];
int arr3[3];
};
int A::arr[] = {1,2,3,4,5,6,7,8,9,10};
int A::arr2[10] = {1,2,3,4,5,6,7,8,9,10};
int main()
{
cout << sizeof(int) << endl;//4
cout << sizeof(A::arr) << endl;//40
A::arr[11] = 888;
cout << A::arr[11] << endl;//正常输出 888
cout << sizeof(A::arr2) << endl;//40
A::arr2[11] = 888;
cout << A::arr2[11] << endl;//正常输出 888
A a;
a.arr1[10] = 999;
cout << sizeof(a.arr1) << endl;//0
cout << a.arr1[10] << endl;//正常输出 999
a.arr3[5] = 123;
cout << a.arr3[5] << endl;//正常输出 123
return 0;
}