Это продолжение Должен ли класс со всеми константными атрибутами также иметь функцию-член, объявленную константной?.
Итак, у меня есть класс PermutationGroup
, все атрибуты которого являются константами. Компилятор по-прежнему делает различие между константным и неконстантным экземпляром:
struct Foo {
const int bar;
void meth();
};
int main() {
Foo foo {2};
foo.meth(); // correct
const Foo cfoo {1};
cfoo.meth(); // wrong
};
Как заметил @nosid в упомянутом вопросе, нельзя вызвать функцию-член, не являющуюся членом const
, экземпляром const:
bla.cpp: In function ‘int main()’:
bla.cpp:10:14: error: passing ‘const Foo’ as ‘this’ argument of ‘void Foo::meth()’ discards qualifiers [-fpermissive]
cfoo.meth();
Итак, вопрос: почему возможно объявить неконстантный экземпляр класса, все атрибуты которого являются константами. Есть ли разумное применение этому?
int
также математические объекты, но они изменяемы. ИМО речь идет об идентичности объекта, а не об изменчивости. - person nosid   schedule 04.05.2014