const-correctness- все статьи тега


Как вызвать неконстантную функцию внутри функции const (C++)

У меня есть унаследованная функция, которая выглядит следующим образом: int Random() const { return var_ ? 4 : 0; } И мне нужно вызвать функцию в этом устаревшем коде, чтобы она теперь выглядела так: int Random() const { return var_ ? newCall(4) : 0; } Проблема в том, что я получаю эту ошибку: In member function 'virtual int Random() const': class.cc:145: error: passing 'const int' as 'this' argument of 'int newCall(int)' discards qualifiers Теперь я знаю, что для исправления это ...

Дает ли const-корректность компилятору больше возможностей для оптимизации?

Я знаю, что это улучшает читаемость и делает программу менее подверженным ошибкам, но насколько это улучшит производительность? и на боковой ноте, в чем основное различие между ссылкой и const указатель? Я предполагаю, что они хранятся в памяти по-разному, но как так? ...

Почему я не могу конвертировать 'типа char*' в 'const чарса* константность*' в C?

следующий фрагмент кода (правильно) дает предупреждение в C и ошибку в C++ (используя gcc & g++ соответственно, протестированный с версиями 3.4.5 и 4.2.1; MSVC, похоже, не заботится): char **a; const char** b = a; Я могу понять и принять это. C++ решение этой проблемы состоит в том, чтобы изменить b на const char * const *, который запрещает переназначение указателей и не позволяет вам обойти const-корректность (C++ FAQ). char **a; const char* const* b = a; однако в чистом C исправленн ...