gpt4 book ai didi

c++ - 如何惯用地为不可变类定义赋值运算符?

转载 作者:太空狗 更新时间:2023-10-29 23:47:12 26 4
gpt4 key购买 nike

在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com