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,类模板的成员函数都是模板函数。


目录
打赏
0
0
0
0
1
分享
相关文章
深入理解C++模板编程:从基础到进阶
在C++编程中,模板是实现泛型编程的关键工具。模板使得代码能够适用于不同的数据类型,极大地提升了代码复用性、灵活性和可维护性。本文将深入探讨模板编程的基础知识,包括函数模板和类模板的定义、使用、以及它们的实例化和匹配规则。
㉿㉿㉿c++模板的初阶(通俗易懂简化版)㉿㉿㉿
㉿㉿㉿c++模板的初阶(通俗易懂简化版)㉿㉿㉿
【C++11】可变模板参数详解
本文详细介绍了C++11引入的可变模板参数,这是一种允许模板接受任意数量和类型参数的强大工具。文章从基本概念入手,讲解了可变模板参数的语法、参数包的展开方法,以及如何结合递归调用、折叠表达式等技术实现高效编程。通过具体示例,如打印任意数量参数、类型安全的`printf`替代方案等,展示了其在实际开发中的应用。最后,文章讨论了性能优化策略和常见问题,帮助读者更好地理解和使用这一高级C++特性。
114 4
【C++】模板详细讲解(含反向迭代器)
C++模板是泛型编程的核心,允许编写与类型无关的代码,提高代码复用性和灵活性。模板分为函数模板和类模板,支持隐式和显式实例化,以及特化(全特化和偏特化)。C++标准库广泛使用模板,如容器、迭代器、算法和函数对象等,以支持高效、灵活的编程。反向迭代器通过对正向迭代器的封装,实现了逆序遍历的功能。
47 3
|
3月前
|
【c++】模板详解(1)
本文介绍了C++中的模板概念,包括函数模板和类模板,强调了模板作为泛型编程基础的重要性。函数模板允许创建类型无关的函数,类模板则能根据不同的类型生成不同的类。文章通过具体示例详细解释了模板的定义、实例化及匹配原则,帮助读者理解模板机制,为学习STL打下基础。
45 0
【C++打怪之路Lv7】-- 模板初阶
【C++打怪之路Lv7】-- 模板初阶
35 1
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
93 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
4月前
|
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
144 10
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
114 2
【C++篇】引领C++模板初体验:泛型编程的力量与妙用
【C++篇】引领C++模板初体验:泛型编程的力量与妙用
75 9
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等