【发布时间】:2016-07-10 12:21:52
【问题描述】:
我想知道当我们可以实现相同的功能目标时,使用元编程(即模板)对抗 C++ 中的继承是否有特别的优势。
例如我们可以做一些事情(我只是想出这样的例子......):
template<typename T>
class Node {
public:
//bla bla
private:
T data;
Node* next;
Node* prev;
};
使用类型特征,我们可以进一步限制特定类别的对象。但是我想我们可以用继承做一些非常相似的事情:
class Base {
//bla bla
};
class Der1 : public Base {
//bla bla
};
//.
//.
//.
class DerN : public Base {
//bla bla
};
class Node {
public:
//bla bla
private:
Base* data;
Node* next;
Node* prev;
};
这样的案例有什么优势?当我们可以同时使用两者来实现同一目标时,选择其中一个或另一个的关键因素是什么?
【问题讨论】:
-
Node<int>呢? -
显然使用模板你只需要一个类。除非您需要模板专业化
-
对于没有运行时多态性的模板。在这种情况下,您不需要它,所以我会选择模板
-
@anderas 把它包起来......你可以找到解决方案。
-
实际上需要两者的混合。
标签: c++ templates inheritance metaprogramming