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);
};
其中bytes
是一个指针,指向在运行时存储器malloc
编块。
我是否定义了一个空的赋值运算符或让它使用自动生成的哪一个会明显失败?
我正试图实施并强制执行单指配语义在几个选择类。
你也可以使用升压转换器的方法,并从派生[一个名为'noncopyable'的类(http://www.boost.org/doc/libs/1_46_1/libs/utility/utility.htm#Class_noncopyable),它为你做了肮脏的工作。以下是一些源代码:http://www.boost.org/doc/libs/1_47_0/boost/noncopyable.hpp –
这种技术是否也会应用于“拷贝构造函数”? –
@Jarrob,是的,它可以应用于'class'中的任何成员方法(用于C++标准) – iammilind