我正在为基于Arduino的系统(即嵌入式系统)开发项目,我只有有限的ROM用于代码存储。
我发现自己需要几种不同类型的集合类(例如List、Stack、Queue)。在编写这些代码后,我注意到除了使它们不同的一些特性之外(例如Add vs Push vs Enqueue, Pop vs Dequeue),它们共享许多相同的功能(例如它们具有完全相同的字段)。
这让我想到,如果我创建一个包含所有其他类通用功能的基类(我们称之为Collection),并使其他类继承它并仅实现不同的功能,那么是否会导致编译的代码更少?
我期望会因为子类可以引用父类的通用函数实现,但我可能是错的,所以在尝试此更改之前,我希望提出询问。
好的,为了进一步澄清,考虑以下假设的类:
我认为无论哪种编译器,只要
我提供的关于引发这个问题的情况的信息仅仅是背景资料,我关心的是是否在任何编译器中都是这种情况 (不仅限于我正在使用的编译器),我完全理解答案可能是 "某些编译器可能会这样做,但并非所有编译器都会这样做",这是一个完全可以接受的答案。
我发现自己需要几种不同类型的集合类(例如List、Stack、Queue)。在编写这些代码后,我注意到除了使它们不同的一些特性之外(例如Add vs Push vs Enqueue, Pop vs Dequeue),它们共享许多相同的功能(例如它们具有完全相同的字段)。
这让我想到,如果我创建一个包含所有其他类通用功能的基类(我们称之为Collection),并使其他类继承它并仅实现不同的功能,那么是否会导致编译的代码更少?
我期望会因为子类可以引用父类的通用函数实现,但我可能是错的,所以在尝试此更改之前,我希望提出询问。
好的,为了进一步澄清,考虑以下假设的类:
class A
{
protected:
int value;
public:
void assign(int other)
{
this->value = other;
}
}
class B : public A
{
public:
void assignAdd5(int other)
{
this->value = other + 5;
}
}
接下来是代码:
A a = A();
B b = B();
a.assign(4);
b.assign(4);
我认为无论哪种编译器,只要
B
是A
的子类,assign
应该在两种情况下都指向同一方法(因此相同的编译代码)。因此,让拥有类似功能的类们都继承自一个实现了这些相似性的基类,比让每个类分别实现这些功能所需的编译代码更少,因为每个子类将使用相同的函数。我提供的关于引发这个问题的情况的信息仅仅是背景资料,我关心的是是否在任何编译器中都是这种情况 (不仅限于我正在使用的编译器),我完全理解答案可能是 "某些编译器可能会这样做,但并非所有编译器都会这样做",这是一个完全可以接受的答案。