在 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);
};
其中 bytes
是指向运行时 malloc
内存块的指针。
我是定义一个空的赋值运算符还是让它使用自动生成的显然会失败?
我正尝试在几个选定的类上实现和强制执行单一赋值语义。
最佳答案
假设您不打算重新分配您的成员(使用 const_cast
等),我建议在您的代码中明确提及您没有使用 operator =
.
在当前的 C++ 标准中,将其设为private
且未实现:
class Binary
{
//...
private:
Binary& operator = (const Binary&);
};
在即将到来的 C++0x 标准中,删除
它:
class Binary
{
//...
Binary& operator = (const Binary&) = delete;
};
关于c++ - 如何惯用地为不可变类定义赋值运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6741982/