Объявленный таким образом, все экземпляры этого класса будут иметь свои собственные копии. Чтобы избежать этого и сохранить память, объявите их как static
.
Примечание: не забудьте определить их вне класса. Так как это int
s, вы можете избежать их определения вне класса, на самом деле это зависит больше от компилятора, чем от стандарта (да, я знаю, насколько нелепо это звучит). Сейчас я не могу это проверить, но я помню, что gcc
и VS
ведут себя по-разному.
Итак, вам может потребоваться сделать следующее:
class SomeClass {
public:
SomeClass()
{ }
private:
static const int SOME_CONSTANT;
static const int ANOTHER_CONSTANT;
static const int ANOTHER_CONSTANT2;
static const int ANOTHER_CONSTANT3;
const int SomeClass::SOME_CONSTANT = 20;
//.. the same for the others.
РЕДАКТИРОВАТЬ Я найду эту часть стандарта (исключение для целочисленных типов) и опубликую ее здесь + тесты на обоих компиляторах позже сегодня :))