C++ 中的模板 类 和函数

Template Classes and Functions in C++

我有个问题让我很困惑。我知道什么是模板和它的目的,但我在使用上有一些空白。

我有一个这样的模板 class:

template <class elemType>
class SSorting {
public:

int seqSearch(const elemType list[], int length, const elemType& item);
};

当我编写 class 函数 seqSearch 的成员时,我需要声明为:

template <class elemType>
int SSorting <elemType> :: seqSearch(const elemType list[], int length, const elemType& item){
    *statements*
}

此时一切正常。模板说这是一个函数,在模板内部 class 和函数前面的 int 意味着该函数将 return 一个整数值,但我不明白的部分是为什么我们必须写 SSorting <elemType> :: seqSearch 而不是 SSorting :: seqSearch。我已经说过这是模板 class 和 return 的成员,请输入为什么我们需要再次说 <elemType>

你应该记得 class/function 模板意味着 对于每个 具有不同模板类型的实例化,编译器会记下代码的另一个副本,将 elemType 替换为相关类型。意思是,如果您在代码中同时使用 SSorting<double>SSorting<int>,您会得到两种完全不同的类型,具有不同的名称。

因此,class 的名称不是 SSorting,而是 SSorting<elemType>!

模板class不是"real"class,它是模板代码。在您使用它之前,它不存在。当你不在定义部分写 "elemType" 部分时,你只是在定义 "real" class.

的成员函数