gpt4 book ai didi

c++ - (我可以最小化)我的 C++ 代码中模板的占用空间吗?

转载 作者:行者123 更新时间:2023-11-27 23:04:53 25 4
gpt4 key购买 nike

我有一个大型类,它基本上处理一个可变(数字)数据类型的缓冲区。因此,使用以该数据类型作为唯一参数的类模板似乎是一个不错的选择。我没有使用 C++ 的经验,我对这样的模板在我的代码中产生的“足迹”感到疑惑/担心。

模板的三个含义在我(没有 C++ 经验的)眼中是不必要的,并且会使代码变得丑陋。我试图避免它们,但我既没有找到一个很好的例子如何去做,也没有设法自己找到它。

所以这道题的目的是:你能不能证实下面的说法或者给出一个反例?

  1. 使用类模板时,所有类方法都必须放入头文件中。即使他们的接口(interface)或实现中没有模板化类型。
  2. 当使用静态方法或类成员时,我总是必须指定模板参数 ( MyClass< double > :: MY_STATIC ),即使模板化不会影响类的任何静态属性。
  3. 当使用类作为函数的参数时,我总是必须提供一个模板参数,即使这个函数不访问任何模板化成员? ( function myFunc(MyClass< double> & myClass){ do something } )

最佳答案

作为一般规则,模板类中不要有不使用模板参数的函数/数据成员。有一个基类,把所有与模板无关的东西放在那里,你的模板类应该从它派生。

回答您的问题:

  • 是的,在任何需要实例化模板的地方,都需要查看类的完整定义及其函数
  • 是的,但是把它放到基类中
  • 是的,见上文

编辑:移至基类的原因之一是代码膨胀(这个表达式确实存在,您可以谷歌它以获取更多信息):如果您不将与模板无关的代码移至基类,则完全相同模板独立代码将被复制用于模板的所有实例化,这意味着很多不必要的代码。如果你把它放到一个基类中,你将只有一次这段代码。

关于c++ - (我可以最小化)我的 C++ 代码中模板的占用空间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24405653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com