Possible en double:
Does const-correctness give the compiler more room for optimization?C++ const-correct et les membres const
Au cours des dernières semaines, je me suis mis au point une chose pour faire tous mes membres non statiques const
si possible afin d'éviter les erreurs de programmation involontaires. Cependant, cette pratique présente d'énormes inconvénients, en particulier pour les objets d'entité, par exemple. personne ne pourra plus jamais appeler un opérateur d'assignation, s'il choisit d'agréger un tel objet entité directement plutôt que d'utiliser un pointeur.
Ma question est de savoir si cette philosophie de membre const
fournit même des bonus d'optimisation du compilateur.
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;
};
Ne serait-il fournir mon compilateur avec toutes les possibilités d'optimisation importantes si ce class
'membres étaient const
? Étant donné que les autres classes regroupent généralement les objets non-const User
, mais presque tous mes algorithmes acceptent un const User &
?
faire, les const
membres offrent des possibilités d'optimisation importantes sur la mentalité déjà const User &
? Et justifierait-il d'utiliser des agrégations const User *
et de reconstruire les objets en cas de changement plutôt que d'utiliser l'opérateur d'affectation?
Merci pour quelques remarques rapides!
Dupliquer. Gardez à l'esprit que vous n'utilisez pas const pour aller plus vite, mais pour réduire les opportunités de bogues dans votre programme en déclarant intente. –