首页 > 编程语言 >C++快速入门 第四十五讲:类模板

C++快速入门 第四十五讲:类模板

时间:2023-08-18 15:45:36浏览次数:63  
标签:第四十五 int C++ template data Stack 模板 size

类模板与函数模板非常相似,同样是先由你编写一个类的模板,再由编译器在你第一次使用这个模板时生成的实际代码。

实例:栈的出入栈

 1 #include <iostream>
 2 #include <string>
 3 
 4 template <class T>
 5 class Stack//栈类 
 6 {
 7 public:
 8     Stack(unsigned int size = 100);//构造器 
 9     ~Stack();//析构器 
10     void push(T value);//入栈 
11     T pop();//出栈
12 private:
13     unsigned int size;
14     unsigned int sp;
15     T *data; 
16 };
17 
18 template <class T>
19 Stack<T>::Stack(unsigned int size)
20 {
21     this->size = size;
22     data = new T(size);
23     sp = 0;
24 }
25 template <class T>
26 Stack<T>::~Stack()
27 {
28     delete []data;//删除数组 
29 }
30 
31 template <class T>
32 void Stack<T>::push(T value)
33 {
34     data[sp++] = value;
35 }
36 
37 template <class T>
38 T Stack<T>::pop()
39 {
40     return data[--sp];
41 }
42 
43 int main()
44 {
45     Stack<int> intStack(100);//定义对象 
46     
47     intStack.push(1);//将1推入栈 
48     intStack.push(2);//将2推入栈
49     intStack.push(3);//将3推入栈
50     
51     std::cout << intStack.pop() << "\n";//弹栈
52     std::cout << intStack.pop() << "\n";//弹栈
53     std::cout << intStack.pop() << "\n";//弹栈
54 }

标签:第四十五,int,C++,template,data,Stack,模板,size
From: https://www.cnblogs.com/ybqjymy/p/17640680.html

相关文章

  • C++快速入门 第四十四讲:函数模板swap使用
    泛型编程技术支持程序员创建函数和类的蓝图(即模板,template),而不是具体的函数和类。标准模板库STL(StandardTemplateLibrary),STL库是泛型编程技术的经典之作,它包含了许多非常有用的数据类型和算法。当拥有一个模板时,编译器将根据模板自动创建一个函数,该函数会使用正确的数据类型......
  • C++快速入门 第四十六讲:内联模板
    内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。编译时类似宏替换,使用函数体替换调用处的函数名。(在程序中,调用其函数时,该函数在编译时被替换,而不是像一般函数那样是在运行时被调用)实例:栈1#include<iostream>2#include<string>34template<class......
  • C++快速入门 第四十七讲:容器和算法
    C++标准库提供的向量(vector)类型从根本上解决了数组先天不足的问题(内存固定,如果不用那么多内存编译器也会为其分配)我们用不着对一个向量能容纳多少元素做出限定,因为向量可以动态地随着你往它里面添加元素而无限增大。还可以用它的size()方法查知某给定向量的当前长度(即包含的元素......
  • C++快速入门 第三十六讲:副本构造器
    我们可以把一个对象赋值给一个类型与之相同的变量,编译器将生成必要的代码把“源”对象各属性的值分别赋值给“目标”对象的对应成员。这种赋值行为称之为逐位复制。(但如果某些成员变量是指针的话,对象成员逐位复制的结果是你将拥有两个一模一样的实例,而这两个副本里的同名指针会指......
  • 利用 AI 视频模板创建器彻底改变内容创建:数字时代的游戏规则改变者
    介绍在不断发展的数字环境中,内容创建已成为企业、营销人员和个人的关键方面。随着注意力的缩短和对视觉吸引力内容需求的增加,对高效和有效的内容创建工具的需求激增。人工智能(AI)已成为一项突破性技术,它彻底改变了内容创作,尤其是随着人工智能视频模板创作者的出现。在这篇博文中......
  • C++快速入门 第三十八讲:避免内存泄漏
    如果程序会运行很长时间(例如在服务器上,注意不是所有的操作系统都像windows一样每天都要重启),并且在不停地申请新的内存块,忘记释放那些已经不再有用的老内存迟早会把内存消耗殆尽,直接导致后边的new操作无法执行甚至崩溃。动态内存是没有作用域的,所以必须由程序员来跟踪它们......
  • C++快速入门 第三十七讲:高级强制类型转换
    实例1:静态强制转换1#include<iostream>2#include<string>34usingnamespacestd;5classCompany6{7public:8Company(stringtheName,stringproduct);9virtualvoidprintInfo();1011protected:12stringname;13......
  • C++快速入门 第二十七讲:运算符左移<<重载
    一般来说,在调用operator<<()重载函数时,传递给它的是哪一个流,它返回的就应该是那个流的一个引用。实例:左移操作符重载1#include<iostream>2#include<string>3#include<math.h>45usingnamespacestd;6classRational//定义基类7{8public:......
  • C++快速入门 第二十八讲:多继承(multiple inheritance)
    1多继承语法:23//助教类既继承于老师类,又继承于学生类4classAssistant:publicTeacher,publicStudent5{6};78当遇到的问题无法只用一个“是一个”关系来描述的时候,就是多继承出场的时候。例即是学生,又是人,还是助教。910#include<iostre......
  • C++快速入门 第三十讲:错误处理和调试
    程序出错可以分为两大类:编译时出错(complie-timeerror)和运行时错误(run-timeerror)suggest1:培养并保持一种编程风格suggest2:认真对待编译器给出的错误/警告信息suggest3:写代码三思而后行(先画流程图)suggest4:注意检查最基本的语法suggest5:把可能有问题的代码行注释suggest......