我是C ++的新手,我想知道应该花多少时间学习如何实现模板类。它们是否在工业中被广泛使用,或者这是我应该快速完成的事情?
答案 0 :(得分:8)
你迟早会需要它们;)但是对于初学者来说,它们写起来有点棘手(但易于使用,因此请密切使用STL)。在掌握了其他c ++技能(const-correctness,运算符重载,学习编译单元等)并获得一些经验之后,您将开始为自己编写模板。所以我的建议是:使用它们但是当你发现需要它们时学习如何编写它们。如果您首先获得一些标准c ++构造的经验,那将会更加快速有效地学习。
答案 1 :(得分:7)
在我的雇主那里,我们使用的主要的东西是C ++,而不是C,实际上是泛型,AKA“模板”。继承& c很好(但有优点和缺点),但模板绝对至关重要 - 主要的,成本低廉的C ++优于普通C的优势。掌握它们,不会浪费时间! - )
答案 2 :(得分:4)
当然,它们在行业中使用。只需查看标准模板库(STL)!
你肯定应该知道如何使用模板,更好的是,学习如何使用模板元编程来做一些奇特的事情,好吧,这可能是可选的,但模板类不是!
编辑:更多的是,Java和C#等许多其他语言都支持泛型的概念,它相当于c ++中的模板,但泛型的限制性要大得多。
答案 3 :(得分:3)
除了其他人所说的,它们在你自己的代码中非常有用,你肯定会在阅读别人的时候遇到它,所以学习它没有坏处。
答案 4 :(得分:2)
如果你在Windows上编写代码,你就不能在C ++中掌握模板。 ATL,STL和其他各种Windows库大量使用模板。
旁注*。如果您使用visual studio,您可能想要了解visual studio中用于支持模板的怪癖。例如,许多Windows库通常在头文件中声明其全部内容以解决链接器错误。它很烦人,但这个限制通常是新手使用visual studio学习C ++的绊脚石。
答案 5 :(得分:1)
不,不要花太多时间学习如何实施它们。另一个答案正确地解释了你当然应该学习如何使用它们。那讲得通;许多库提供类模板,您应该学会使用这些库。但是编写自己的模板非常罕见。
答案 6 :(得分:1)
我认为理解模板是现代C ++风格和习语的要求,并且充分利用了语言。它们并不像人们常常相信那么困难。如果你是初学者,我绝对推荐像Accelerated C++这样的书,它提供了一个非常温和和自然的模板介绍。
答案 7 :(得分:1)
正如其他人所说,模板是C ++语言中非常重要的一部分。事实上,它们本身就是一种图灵完整的语言;) 然而,STL不仅大量使用模板(曾经使用过std :: vector或std :: pair?),许多其他库也这样做......最值得注意的可能是提升。我希望这会给你一个关于它们有多重要的印象。
您应该学习的是如何在类和函数的上下文中使用它们。掌握了这一点后,您可以继续学习更高级的主题,如模板专业化或模板模板参数。 如果你还没有足够的模板,你可以退房 Nicolai M. Josuttis和他的“C ++模板:完整指南” Andrei Alexandrescu的“现代C ++设计”。即使后者真的很难理解。
首先,此资源http://www.parashift.com/c++-faq-lite/templates.html也可能有用:)
请注意,Generics不是“C#/ Java中的模板”,反之亦然......它们遵循不同的概念。