我正在考虑奇怪地重复使用模板模式。
我发现它非常有用,并且对于许多任务来说都可以很好地调整。但是我必须承认,我没有看到很多CRTP代码。
很难把握吗?虚拟功能总体上是否更容易?90%出现虚拟关键字的情况下,是否应该使用它?
我正在考虑奇怪地重复使用模板模式。
我发现它非常有用,并且对于许多任务来说都可以很好地调整。但是我必须承认,我没有看到很多CRTP代码。
很难把握吗?虚拟功能总体上是否更容易?90%出现虚拟关键字的情况下,是否应该使用它?
Answers:
一个简单的事实是,即使不是大多数,很多C ++用户也很难理解它vector
比malloc
和更好的东西free
,因此不仅可以欣赏而且可以实现高级模板元编程的人数并不多。这意味着即使它对90%的情况都有效,您看到它的机会也要少得多,这仅仅是因为人们不知道它或如何使用它。
但是,虚拟功能确实具有优势,即,虚拟功能比CRTP更易于使用。C ++模板因对几乎所有事物都bit之以鼻而臭名昭著,而包含模型则很糟糕。
但是,它们(虚拟功能)明显较慢且功能较弱。例如,我现在正在使用CRTP编写代码,您可以在其中继承用于表达式模板的运算符重载。虚拟功能不可能使这项工作奏效。
以下是未广泛使用的原因: