Я просто предполагаю, что вы пытаетесь сделать это:
class foo {
int m_iX = 5;
};
Это потребует запуска кода в конструкторе, поскольку каждый вновь созданный экземпляр должен будет инициализировать эту переменную.В C ++ весь код, который выполняется во время конструктора (к счастью), содержится в самом конструкторе, поэтому сразу становится очевидным, что влечет за собой конструкция класса.Кроме того, поскольку класс может иметь любое количество конструкторов (включая конструкторы копирования), было бы неоднозначно, когда эта инициализация должна или не должна иметь место.
Вы можете сделать это:
class foo {
enum {
CONSTANT = 8
};
};
Это позволяет использовать foo::CONSTANT
.Это работает, так как это будет для каждого класса, а не для каждого экземпляра.
Аналогично, вы можете сделать это:
class foo {
static int sm_iX;
};
в .cpp:
int foo::sm_ix = 5;
Опять же, это для каждого класса, а не для каждого экземпляра, и как таковое не имеет отношения к созданию фактического экземпляра.
Бонус - если вы объявите этот int const, многие компиляторы могут оценить его при компиляции.время.