C ++ вынуждает программиста определять непостоянный статический член вне класса, и причина этого, которую я продолжаю видеть, заключается в том, что если статический член был определен внутри класса, это привело бы к нескольким определениям для статического члена. Я понимаю, что наличие нескольких определений для статического члена - это плохо, но я не понимаю, откуда вообще взялись эти несколько определений. Разве инициализированный непостоянный статический член не должен просто входить в раздел данных и быть единственным определением?
struct Student {
static int x = 4; // Why would this result in multiple definitions?
};
Кроме того, я читал в этом другом сообщении stackoverflow, что статические члены const просто встраиваются в код, где бы он ни использовался: Почему я не могу иметь в классе нецелочисленный статический константный член? Это обрабатывается препроцессором вместе со всеми остальными директивы? (Я спрошу об этом в другом посте, если нужно, но я не был уверен, стоит ли это отдельного поста).