Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > [const int GetVal() const] против [int GetVal()]


Автор: Quadruple 29.3.2005, 19:42
Чето я догнать немогу, в чем отличие:
Код

const int GetVal() const;

и
Код

int GetVal();

Везде в либах пишется const. Это ускоряет работу приложения? smile

Автор: Олег М 29.3.2005, 19:56
Цитата(Quadruple @ 29.3.2005, 19:42)
Чето я догнать немогу, в чем отличие:

Я так понимаю это методы какого то класса? Иначе большого смысла нет
const int GetVal() - ерунда какая-то
int GetVal() const; - Так надо писать (хороший стиль ну и вообще), если внутри этого метода ты не меняешь состояние объекта (что-то типа read only), ну и, судя по названию функции, в данном случае. Этот метод можно будет вызывать если ссылка на объект - констатнтная - const CObject &obj или const CObject *pObj
иначе - int GetVal(); - означает что в методе изменяется состояние объекта, для константных ссылок вызавать этот метод нельзя

Автор: Quadruple 29.3.2005, 20:02
Олег М
Цитата

Я так понимаю это методы какого то класса?

Да.

Функция просто возвращает значение переменной. А добавление const как-то увеличивает скорость или чего? Или чтоб знать что read only?

Автор: Олег М 29.3.2005, 20:04
Цитата(Quadruple @ 29.3.2005, 20:02)
А добавление const как-то увеличивает скорость или чего? Или чтоб знать что read only?

Теоретически да, если компилятор знает, что метод констатнтный, то он его наверняка как-нибудь заоптимизирует.

Автор: Quadruple 29.3.2005, 20:10
Олег М
Спасибо за инфу smile

Автор: Goryachev 29.3.2005, 23:16
Олег М
Я не думаю. С константного метода можно изменять переменные mutable.

Автор: Hroft 1.4.2005, 12:50
Цитата(Goryachev @ 29.3.2005, 23:16)
Я не думаю. С константного метода можно изменять переменные mutable.

Что ты не думаешь-то? Страуструп: mutable означает "ни при каких условиях не является константой". Он специально создан для обхода константности. Хотя лично я его ни разу не использовал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)