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. 通常、他のクラスは非 constUserオブジェクトを集約するという事実を考えると、ほとんどすべてのアルゴリズムはconst User &?を受け入れます。
では、メンバーは、すでに存在しているメンタリティconstに対して重要な最適化の機会を提供していますか? また、代入演算子を使用するのではなく、集約をconst User &使用して変更時にオブジェクトを再構築することを正当化できますか?const User *
早速のご指摘ありがとうございます!