Mar*_*rkB 3 c++ templates inline
所有代码从我读过的内容来看,A1和A2是相同的,但如果A3与A2完全相同,我不会这样做.我知道代码将编译,因为所有A类都被tmemplated.
注意:所有类和方法声明都在.h文件中.
template <typename _Ty>
class A1 {
public:
A1();
void foo() { ... }
};
template <typename _Ty>
class A2 {
public:
A2();
void foo();
};
template <typename _Ty>
inline void A2<_Ty>::foo() { ... }
template <typename _Ty>
class A3 {
public:
A3();
void foo();
};
template <typename _Ty>
void A3<_Ty>::foo() { ... } // note: No inline keyword here.
Run Code Online (Sandbox Code Playgroud)
PS我在stackoverflow上看过这个问题的变种,但不是这个问题.
是的,它有意义,但与模板结合使用效果不大.
inline
关键字的主要作用是告诉编译器此函数可能在多个编译单元中以相同的定义出现,因此需要将其标记为链接器的"select-one"(因此您不会获得多个定义错误) ).模板已具有此功能.
inline
也是对编译器的暗示,您认为该函数应该内联,但编译器通常会自行决定内联优化.