C++初阶(长期更新)第8讲:模板
跟着潼心走,轻松拿捏C++,困惑通通走,一去不回头~欢迎开始今天的学习内容,你的支持就是博主最大的动力。
博主主页:潼心1412o-CSDN博客
前言
今天我们一起学习模板的内容,gogogo,出发喽~
8.1 模板
C++提供了一种新的泛型编程方式,模板。本质上是底层以模板为蓝图生成不同的函数和类
分为函数模板和类模板
8.2 函数模板
用不同的参数类型使用函数模板时,称为函数的实例化,分为隐式实例化和显式实例化
隐式实例化即编译器自动推导模板参数实际类型
显式则用<>制定模板参数的实际类型
//函数模版 template<class T> //template<typename K> void Swap(T& left, T& right) { T temp = left; left = right; right = temp; } //每个模板函数都必须带自己的template头 template<class T> T Add(T& a, T& b) { return a + b; } int main() { int i = 0, j = 1; double x = 1.1, y = 2.2; Swap(i, j); Swap(x, y); //隐式实例化 cout << Add(i,j) << endl; cout << Add(x, y) << endl; //显式实例化 cout << Add<int>(i,j) << endl; cout << Add<double>(x, y) << endl; return 0; }8.3 类模板
namespace bit { //类模板 template<class T> class Stack { public: stack(int n = 4) :_a(new T[n]) , _top(0) , _capacity(n) { } ~Stack() { delete[] _a; _a = nullptr; _top = _capacity = 0; } private: int* _a; int _top; int _capacity; }; } int main() { try { bit::Stack<int> st1; bit::Stack<double>st2; } catch (const exception& e) { cout << e.what() << endl; } return 0; }好了今天的学习内容就到这里啦,谢谢你的陪伴,我是潼心,下次再见~如果这篇文章对你有帮助的话。请务必给主播一个一键三连,球球了,这对主播很重要~
博主主页:潼心1412o-CSDN博客