C++模板类示例

 C++ |  copy code |? 
01
#include<iostream>
02
using namespace std;
03
 
04
template<typename Type>
05
class GroupBase
06
{
07
public:
08
    Type *data;
09
    GroupBase(int n)
10
    {
11
        data = new Type[n];
12
    }
13
    ~GroupBase()
14
    {
15
        delete[] data;
16
    }
17
    Type& operator [] (const int index) const
18
    {
19
        return data[index];
20
    }
21
};
22
 
23
template<typename Type>
24
class Group;
25
 
26
template<> class Group<int>:public GroupBase<int>
27
{
28
public:
29
    Group(int n):GroupBase<int>(n)
30
    {
31
    }
32
    void Print()
33
    {
34
        cout<<"In template class Group<int>!"<<endl;
35
    }
36
};
37
template<> class Group<double>:public GroupBase<double>
38
{
39
public:
40
    Group(int n):GroupBase<double>(n)
41
    {
42
    }
43
    void Print()
44
    {
45
        cout<<"In template class Group<double>!"<<endl;
46
    }
47
};
48
template<typename Type,typename G = Group<Type> >
49
class AutoGroup
50
{
51
    G group;
52
public:
53
    AutoGroup(int n)
54
    :group(n)
55
    {
56
    }
57
    Type& operator [] (const int index) const
58
    {
59
        return group[index];
60
    }
61
    void Print()
62
    {
63
        group.Print();
64
    }
65
};
66
int main()
67
{
68
    AutoGroup<int> agi(10);
69
    cout<<agi[5]<<endl;
70
    agi.Print();
71
    AutoGroup<double> agd(10);
72
    cout<<agd[5]<<endl;
73
    agd.Print();
74
}
75

不太了解C++模板,看到别人的代码,模仿写了个,有时间翻下C++ Templates

文章分类 Classic Code

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>