2

C++ では、operator=不変であるべきクラスで定義する慣用的な方法は何ですか。たとえば、すべてのメンバー変数はconst.

typedef unsigned char byte;

class Binary
{
protected:
    const unsigned long size;
    const byte* bytes;

public:
    Binary(const unsigned long size);
    Binary(const Binary &b);
    ~Binary(void);

    Binary& operator=(const Binary &b);
};

ここで、実行時に ed されるbytesメモリ ブロックへのポインタです。malloc

空の代入演算子を定義するか、明らかに失敗する自動生成された演算子を使用しますか?

いくつかの選択したクラスで単一の割り当てセマンティクスを実装および適用しようとしています。

4

1 に答える 1

9

(などを使用して) メンバーを再割り当てしないと仮定すると、使用してconst_castいないことをコードで明示的に言及することをお勧めしますoperator =

現在の C++ 標準では、それprivateを非実装にします。

class Binary
{
  //...
private:
  Binary& operator = (const Binary&);
};

今後の C++0x 標準では、次のようにdeleteなります。

class Binary
{
  //...
  Binary& operator = (const Binary&) = delete;
};
于 2011-07-19T03:28:50.917 に答える