两个派生类(十六进制 二进制)的虚拟功能

Virtual functions for 2 derived classes (Hex + binary)

本文关键字:二进制 功能 十六进制 虚拟 派生 两个      更新时间:2023-10-16

我有基类数组,其中我的虚拟函数添加了添加

class Array
{
public:
    unsigned char arr[100] = { 0 };
    int size;
    Array();
    Array(int);
    char operator[](int);
    virtual Array& Add( Array);
};

我有两个派生的类十六进制(用于存储六边形数字(和bittring(用于存储二进制数字(:

class BitString : public Array
{
public:
    BitString& operator&(BitString&);//and
    BitString& operator|(BitString&);//or
    BitString& operator^(BitString&);//xor
    BitString& operator~();//not
};
class Hex: public Array
{
public:
    Hex& operator+(Hex);
    Hex& operator-(Hex);
    Hex& operator*(Hex);
    Hex& operator/(Hex);
    bool operator==(const Hex);
    bool operator>(const Hex);
    bool operator<(const Hex);
    Hex DecToHex(int);
};

我的任务,除了制作六角和bitstring的操作员,是覆盖添加bitstring和十六进制对象的虚拟添加函数。

我没有正确地得到:

1(我需要在十六进制和botstring

中发挥2个功能

2(这些功能应该返回什么?十六进制,斑点或数组。

3(最快的方法是什么?将十六进制和斑点同时转换为小数,进行加法然后再次转换?

谢谢。

由于您的类是多态性的,因此Add()函数应采用参考或指针参数:

class Array {
    // ...
    virtual Array& Add(Array&);
};

您现在可以在派生类中覆盖Add(),具有不同的返回类型:

class Hex: public Array {
    // ...
    Hex& Add(Array&) override;
};

返回类型必须是执行替代的类的参考类型。这是替代可以更改返回类型的唯一情况。