C++中为什么不要模板化类继承
本篇内容主要讲解"C++中为什么不要模板化类继承",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++中为什么不要模板化类继承"吧!
T.80:不要天真地模板化类继承
Reason(原因)
Templating a class hierarchy that has many functions, especially many virtual functions, can lead to code bloat.
模板化包含很多成员函数,特别是虚函数的类继承层次会导致代码膨胀。
Example, bad(反面示例)
template
struct Container { // an interface
virtual T* get(int i);
virtual T* first();
virtual T* next();
virtual void sort();
};
template
class Vector : public Container {
public:
// ...
};
Vector vi;
Vector vs;
It is probably a bad idea to define a sort as a member function of a container, but it is not unheard of and it makes a good example of what not to do.
为容器定义一个排序成员函数几乎肯定就是一个坏主意,但这并非没有先例,可以当作说明我们不应该做什么的好例子。
Given this, the compiler cannot know if vector
编辑器接受这段代码时,无法知道vector
Note(注意)
In many cases you can provide a stable interface by not parameterizing a base; see "stable base" and OO and GP
在很多情况下,你可以在不必参数化基类的情况下提供稳定的接口;参见"稳定的基类和OO and GP。
Enforcement(实施建议)
标记依赖模板参数的虚函数。
到此,相信大家对"C++中为什么不要模板化类继承"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!