C++ 類別樣板 class template

本篇介紹 C++ 的 class template,以下為 C++ 使用 class template 範例教學,

c++ template class 簡單版 (class)

c++ class template 類別樣板的範例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template<typename T>
class AAA {
public:
AAA(T data) {
mData = data;
}

void print() {
std::cout << mData << endl;
}
private:
T mData;
};

int main() {
AAA<int> a1(10);
a1.print();

AAA<std::string> a2("hello world!");
a2.print();

return 0;
}

輸出

1
2
10
hello world!

進階版 (繼承)

根據上個範例,我們新增一個衍生類 BBB 繼承 AAA,衍生類的建構子的寫法如下(呼叫父類的建構子), 要特別注意一下,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
template<typename T>
class AAA {
public:
AAA(T data) {
mData = data;
}

virtual void print() {
std::cout << mData << endl;
}

protected:
T mData;
};

template<typename T>
class BBB : public AAA<T> {
public:
BBB(T data) : AAA<T>(data) {

}

void print() override {
std::cout << "data = " << this->mData << endl;
}
};

int main() {
BBB<float> b1(5.2f);
b1.print();

return 0;
}

輸出

1
data = 5.2

其它相關文章推薦
C/C++ 新手入門教學懶人包
C++ virtual 的兩種用法
C/C++ call by value傳值, call by pointer傳址, call by reference傳參考 的差別