c++ - 在哪里/如何定义模板

标签 c++ templates header inline definition

关于用 C++ 定义模板的最佳实践是什么?

template <class T>
class A
{
private:
    // stuff
public:
    T DoMagic()
    {
        //method body
    }
}

Or:

template <class T>
class A
{
private:
    // stuff
public:
    T DoMagic();
}

template <class T>
A::T DoMagic()
{
    // magic
}

另一种方式? 我似乎偶然发现了关于这个主题的一些争议。 所以;选择什么路径?

最佳答案

这完全是风格问题。话虽如此:

  1. 选择一种方式并坚持下去——要么全部内联,要么全部外出,要么根据某种规则混合
  2. 我个人使用 3 行规则。如果模板中的方法主体超过 3 行,我将其移到外面。

没有真正的理由不包括所有内联定义(它们无论如何都是从编译器 POV 内联的),但是,许多人认为将它们分开会更干净,并允许类定义更具可读性。

关于c++ - 在哪里/如何定义模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2231041/

相关文章:

c++ - unordered_map 结构化绑定(bind)中的推导类型

python - 如何在 Django 中的 HTML 表单上显示表单中的多对多字段

c++ - 如何访问 tcp header 详细信息?

c - 在单独的头文件中定义的类型的 typedef

c++ - 我的字母字符串管理器无法正确保存到文件中

c++ - 使用旋转矩阵旋转 Texture2d

javascript - 使用 visual studio 和 intellisense 注册扩展 EJS?

python - 与 Python 中的 string.Template 相反

即使在删除空格后,PHP header 在 MAMP 中也不起作用

c++ - 我该如何正确处理这个 SFINAE?