给出以下类声明:
template <int N>
class MyClass {
public:
MyClass();
~MyClass();
};
以及以下定义:
template <int N>
MyClass<N>::MyClass() {
}
template <int N>
MyClass<N>::~MyClass() {
}
我有两个问题:
MyClass::
(有和没有模板)?template <int N>
?答案 0 :(得分:2)
来自[class.mfct]:
如果成员函数的定义在词法定义之外是词法定义,则成员函数名称应使用::运算符通过其类名限定。
如果要在类定义之外定义成员函数,则每次都需要编写MyClass::
。由于MyClass
是一个模板,因此您需要确定是否要定义template <int N> MyClass<N>
成员函数。你的两个问题的答案都是肯定的(尽管对于#2,每个成员函数 - 不仅仅是构造函数和析构函数)。