假设我有一个名为DataStructure的类和另一个名为ConstDataStructure的类,如下所示:
class DataStructure
{
public:
DataStructure();
virtual ~DataStructure();
unsigned char * data();
template <class T>
void setData(T data);
private:
unsigned char * data_;
}
和
class ConstDataStructure
{
public:
ConstDataStructure();
virtual ~ConstDataStructure();
const unsigned char * data() const;
private:
const unsigned char * data_;
}
我被要求“使DataStructure继承ConstDataStructure以供重用”。但是,这似乎不是一个合乎逻辑的陈述。我被教导说继承就像一个“是一个”关系,所以如果A继承自B,那就像是说“A是一个B”。在这里,它就像是说“DataStructure是一个ConstDataStructure”,似乎并非如此,因为DataStructure类具有带有setter函数的可变data_ object,而ConstDataStructure必然没有。 ConstDataStructure从DataStructure继承似乎更自然,因为它是同一种类,但它是一个更具体的实例。或者,只是不能在任何一个方向上继承,尽管这似乎是多余的。
我错了吗?请求是否合情合理?如果是这样,继承该类的常量版本是如何工作的?