C++ - 重载'=',用于将十六进制值分配给对象
C++ - Overloading '=' to assign hex value to an object
我正在尝试实现一个类似于颜色对象十六进制赋值的系统,例如:
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;
}
...
}
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 指向存储在字符串 c++ 中的十六进制
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C ++如何使用UTF8十六进制代码打印UTF8符号?
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何在C++中将十六进制字符串转换为文本数据
- 使用 sprintf 将十六进制0xAABBCC转换为字符串"AA:BB:CC"
- 绝对编码器十六进制输入
- 为什么C++总是显示十六进制内存地址,而不仅仅是整数?
- 直接为浮点变量分配十六进制整数与通过指针转换分配之间的区别
- C++ - 重载'=',用于将十六进制值分配给对象
- 将短边的十六进制值分配给短边
- 将声明的 INT/UINT 的八进制/十六进制分配给另一个变量