可能性の重複:最後の数週間の間に
Does const-correctness give the compiler more room for optimization?C++のconst-正しさとconstのメンバー
、私は、可能な場合は、すべて私の非静的メンバにconst
を作るためのものを開発してきました意図しないプログラミングエラーを避けるためです。しかしながら、この実践は、特にエンティティオブジェクトの場合、いくつかの大きな欠点を提供する。ポインタを使用するのではなく、そのようなエンティティオブジェクトを直接集約することを選択した場合、誰も代入演算子をもう呼び出すことはできません。
私の質問は、このconst
メンバの哲学がコンパイラの最適化ボーナスを提供するかどうかについてです。このclass
「メンバーは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;
};
は、それが重大な最適化の可能性と私のコンパイラを提供しますか?実際には他のクラスは非constオブジェクトUser
を集約するでしょうが、私のほとんどのアルゴリズムはconst User &
を受け入れますか?
const
のメンバーは、既に存在しているconst User &
のメンターシップよりも有意義な最適化の機会を提供していますか?そして、それはconst User *
アグリゲーションを使用して正当化し、代入演算子を使用するのではなく、変更時にオブジェクトを再構築するでしょうか?
ありがとうございました!
重複しています。より速く進むためにconstを使用するのではなく、intenteを宣言してプログラムのバグの可能性を減らすことに注意してください。 –