void func()const;//тут нельзя изменять все, что не mutable
void fucn(const A *obj);//нельзя изменять объект A.
Вот прочитал на хабре:
Цитата
Кроме того, этот const позволяет перегружать методы. Таким образом, вы можете писать оптимизированные варианты методов для константных объектов.
Раскрывающийся текст
class A {
private:
int x;
public:
A(int a) {
x = a;
cout << "A(int) // x=" << x << endl;
}
void f() {
cout << "f() // x=" << x << endl;
}
void f() const {
cout << "f() const // x=" << x << endl;
}
};
int main() {
A a1(1);
a1.f();
A const a2(2);
a2.f();
return 0;
}
Результат:
A(int) // x=1
f() // x=1
A(int) // x=2
f() const // x=2
То есть для константного объекта (с x=2) был вызван соответствующий метод.
Оптимизированный в том смысле, что самому заботится не надо какой ты объект передаешь(const, не const) и компилятор сам выберет нужный метод?
А вообще const в аргументах и т.д. хоть как-то влияет на скорость выполнения?
P.S. Пока понимаю только один смысл - оберегание от случайных изменений данных.