Ben*_*Ben 9 c++ templates inline class
在类声明中定义模板类的成员函数与外部之间是否存在差异?
内部定义:
template <typename T>
class A
{
public:
void method()
{
//...
}
};
Run Code Online (Sandbox Code Playgroud)
在外面定义:
template <typename T>
class B
{
public:
void method();
};
template <typename T>
void B<T>::method()
{
//...
}
Run Code Online (Sandbox Code Playgroud)
对于非模板类,这是内联和非内联方法之间的区别.模板类也是如此吗?
我的大多数同事的默认设置是在类中提供定义,但我总是更喜欢类外的定义.我的偏好是否合理?
编辑:请假设所有上述代码都在该类的头文件中提供.
是的,模板类也是如此。
模板类的方法定义通常首选内联的原因是对于模板,在实例化模板时整个定义必须是可见的。
因此,如果将函数定义放在某个单独的 .cpp 文件中,则会出现链接器错误。唯一的通用解决方案是使函数内联,通过在类内部或外部使用inline关键字定义它。但在任何一种情况下,它都必须在调用函数的任何地方可见,这意味着它通常必须与类定义位于同一标头中。
| 归档时间: |
|
| 查看次数: |
2850 次 |
| 最近记录: |