C++ - 重载'=',用于将十六进制值分配给对象

C++ - Overloading '=' to assign hex value to an object

本文关键字:十六进制 分配 对象 重载 C++ 用于      更新时间:2023-10-16

我正在尝试实现一个类似于颜色对象十六进制赋值的系统,例如:

Color color;
color = 0xffff00;

如果我的理解是正确的,运算符"="已被重载,因此它实际上将十六进制值存储在 Color 中的数据类型中。我真的不明白该怎么做,但这是我所拥有的: (假设 Color 将颜色存储在称为"data"的 3 字节 typedef 中)

Color operator=(const unsigned int& c) {
Color color;
color.data = c;
return color;
}

这会给我我需要的东西吗?

你应该重载类的赋值运算符,可能还有一个构造函数,就像这样:

class Color
{
public:
Color(): data(0) {}
Color(unsigned i): data(i) {} // add an int constructor
// add assignment operator
Color& operator=(unsigned i) { data = i; return *this; }
private:
unsigned data;
};

重载构造函数允许您像这样进行初始化:

Color c = 0x00FF00;

重载赋值运算符允许您在初始化后赋值:

c = 0xFF00FF;

我认为最好将其实现为成员函数,这样它就可以就地修改对象,而不是构造一个新对象并复制它。

class Color {
...
public:
void operator= (const unsigned int &c) {
data = c;
}
...
}