ben*_*itj 10 c++ inheritance templates code-generation
有没有人有使用继承减少模板代码膨胀的经验?
我犹豫以这种方式重写我们的容器:
class vectorBase
{
public:
int size();
void clear();
int m_size;
void *m_rawData;
//....
};
template< typename T >
class vector : public vectorBase
{
void push_back( const T& );
//...
};
Run Code Online (Sandbox Code Playgroud)
我应该保持最大的性能,同时减少编译时间
我也想知道为什么stl实现不使用这种方法
感谢您的反馈
我认为这是一个不成熟的优化。一般来说,除了嵌入式系统之外,磁盘空间和内存充足且便宜,因此没有理由尝试针对少量代码空间进行优化。通过将所有内容都保留在模板代码中,可以使正在发生的事情更加明显,而不是使用会使事情变得复杂的继承。
此外,大多数应用程序不会生成数百个实例化,并且对于每个 T ,并非可以使用所有方法,从而进一步减少代码占用量。
只有当存在极其严格的内存考虑(嵌入式)时,我才会考虑不同的可能方法(包括您提出的方法)。
编辑:我不确定在一些标准容器案例中会有多大收获,因为它们仍然需要大量模板代码。对于只有少量模板特定代码和大量通用逻辑的内部类,这肯定有助于生成代码和编译速度。我怀疑它不经常使用,因为它更复杂并且好处仅限于某些场景。