Мы все знаем, что sizeof пустого класса или объекта пустого класса будет 1 байт.
Я столкнулся с чем-то, где sizeof
класс, а его объект равен 0. Программа синтаксически корректна, поскольку не было ошибок компиляции или времени выполнения. Это поведение undefined? Случай использования, который я пытаюсь выполнить, имеет смысл и выглядит как действительный? Является ли большой ошибкой не давать точный индекс или размер массива в классе? Фрагмент кода выглядит следующим образом:
#include<iostream>
using namespace std;
class A
{
char a[];
};
int main()
{
A b;
cout<<sizeof(A)<<endl;
cout<<sizeof(b)<<endl;
return 0;
}
выход:
0
0
sizeof
пустой класс - это один байт (в основном не нулевой), и причина этого называется "Чтобы убедиться, что разные объекты имеют разные адреса".
Что произойдет в этом случае, когда класс sizeof
будет равен нулю?
Примечание. Наблюдается то же поведение для int a[]
.