C++初阶模板--2

简介: C++初阶模板--2

C++初阶模板--1 https://developer.aliyun.com/article/1424649

类模板:


       类模板的格式如下:

template<class T1, class T2, ..., class Tn>
class 类模板名
{
    ..........
};


       类模板的实例化:类模板的实例化与函数模板的实例化不同,类模板的实例化需要在类模板名字后跟 “ <> ”,然后将实例化的类型放在 “ <> ” 中即可。


template<class T>
class Stack
{
public:
    Stack(int capacity = 4)
    {
        cout << "Stack(int capacity = 4)" << endl;
        _a = new T[capacity];//这里需要用到T,所以不能直接实例化int*或double*
        _top = 0;
        _capacity = capacity;
    }
    ~Stack()
    {
        cout << "~Stack()" << endl;
        delete[] _a;
        _a = nullptr;
        _top = 0;
        _capacity = 0;
    }
    T* _a;
    int  _top;
    int  _capacity;
};
int main()
{
    //显示实例化
    Stack<int> st1;
    cout << typeid(st1._a).name() << endl;//输出int*,因为 T* _a
    Stack<double> st2;  
    cout << typeid(st2._a).name() << endl;//输出double*,因为 T* _a
    return 0;
}


       注意:类模板名字不是真正的类,而实例化的结果才是真正的类,如下:


Stack<int> st1;  //Stack只是类名,Stack<int>才是类型
Stack<double> st2;  //Stack只是类名,Stack<double>才是类型


       当我们使用类模板对象中的成员时,要使用 “ 类型 ” 进行作用域的访问,不能使用类名。

Stack<int>.~Stack() //调用Stack<int>类型的析构函数
Stack<double>.~Stack() //调用Stack<double>类型的析构函数


注意:


       1,模板在运行时不检查数据类型,也不保证类型安全,相当于类型的宏替换。


       2,要区分类模板和模板类,类模板是一个类家族,重点在类上,可以实现类的不同类型,模板类重点在类上,是通过类模板实例化的具体类。


       3,类模板的成员函数都是模板函数。


相关文章
|
2天前
|
存储 算法 编译器
C++的模板与泛型编程探秘
C++的模板与泛型编程探秘
8 0
|
2天前
|
编译器 C++
【C++从练气到飞升】08---模板
【C++从练气到飞升】08---模板
|
3天前
|
算法 编译器 C++
【C++入门到精通】新的类功能 | 可变参数模板 C++11 [ C++入门 ]
【C++入门到精通】新的类功能 | 可变参数模板 C++11 [ C++入门 ]
20 1
|
4天前
|
编译器 C语言 C++
【C++】模板进阶
【C++】模板进阶
10 1
|
4天前
|
存储 编译器 C++
【C++】内存管理和模板基础(new、delete、类及函数模板)
【C++】内存管理和模板基础(new、delete、类及函数模板)
19 1
|
10天前
|
C++
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
|
10天前
|
编译器 C语言 C++
c++初阶------类和对象(六大默认构造函数的揭破)-3
c++初阶------类和对象(六大默认构造函数的揭破)
|
10天前
|
编译器 C语言 C++
c++初阶------类和对象(六大默认构造函数的揭破)-2
c++初阶------类和对象(六大默认构造函数的揭破)
|
10天前
|
存储 编译器 C语言
c++初阶-------类和对象-2
c++初阶-------类和对象
|
10天前
|
安全 编译器 C语言
C++初阶------------------入门C++(三)
C++初阶------------------入门C++(三)