2009-08-10 128 views
22

我听说过关于C++ 0x的所有新的(on /。),没有概念了,但我不知道它们是什么?有人可以向我解释吗?什么是概念?

回答

25

概念是一个通用的编程功能,它允许某人写模板代码来指定哪些类型的参数需要满足的要求。

例如,某些集合类型需要集合的类型参数来定义<运算符。所以程序员可能会定义一个名为LessThanComparable的概念,它告诉编译器模板类的类型参数需要定义运算符<。如果模板用户然后尝试使用不具有LessThanComparable概念的类型实例化模板(即,没有运算符<函数),则编译器可以发出简单的错误消息,而不是与模板化代码关联的错误消息的洪流。编译器也可以利用概念提供的额外信息来生成更高效的代码。

这是一些过于简单的事,但我认为它给了你概念背后的总体思路。

如果您想尝试一些概念功能,请查看Boost.Concept Check库。我不认为它提供了标准中的全部功能,但它是一个很好的开始。

您可能还想看看ConceptC++,这里有一个很好的概念定义。

+0

呵呵,这几乎就是EBGreen的链接所说的!奇怪的巧合,嗯? – jkeys 2009-08-10 02:07:56

+2

不是。我在近一年前第一次发表该文章时阅读了这篇文章。我确实有能力保留信息:-) – Ferruccio 2009-08-10 11:23:48

+0

很好的答案。这是我不敢问的关于C++的问题之一 – chester89 2009-08-10 14:44:43