Можно создать дубликат:
Does const-correctness give the compiler more room for optimization?C++ Уст-корректность и константные члены
В течение последних нескольких недель, я разработал вещь для создания всех моих нестатические члены const
, если это возможно во избежание непреднамеренных ошибок программирования. Однако эта практика дает некоторые огромные недостатки, особенно для объектов сущностей, поскольку, например, никто больше никогда не сможет вызвать оператор присваивания, если они предпочтут агрегировать такой объект объекта напрямую, а не использовать указатель.
Вопрос в том, действительно ли эта философия элемента const
предоставляет любые бонусы оптимизации компилятора.
class User {
public:
User(const std::string &, const std::vector<unsigned char> &);
~User();
const std::string &getName() const;
const std::vector<unsigned char> &getPasswordHash() const;
private:
std::string name;
std::vector<unsigned char> passwordHash;
};
Будет ли это обеспечить мой компилятор с какой-либо значительными возможностями оптимизации, если это class
'членов const
? Учитывая тот факт, что другие классы обычно обычно объединяют неконстантные объекты User
, но почти все мои алгоритмы принимают const User &
?
Значит, члены const
предоставляют любые значительные возможности оптимизации по сравнению с уже существующим менталитетом const User &
? И оправдывает ли это использование агрегатов const User *
и восстанавливает объекты при изменении, а не использует оператор присваивания?
Спасибо за некоторые быстрые замечания!
Дубликат. Пожалуйста, имейте в виду, что вы не используете const, чтобы идти быстрее, но чтобы уменьшить количество ошибок в вашей программе, объявив о намерении. –