58 - 类模板的概念和意义

news2024/11/25 2:46:42

---- 整理自狄泰软件唐佐林老师课程

1. 思考

在C++中是否能够将泛型的思想应用于类?

1.1 类模板

  • 一些类主要用于存储和组织数据元素
  • 类中数据组织的方式和数据元素的具体类型无关
    • 如:数组类、链表类、Stack类、Queue类,等
  • C++中模板的思想应用于类,使得类的实现不关注数据元素的具体类型,而只关注类所需实现的功能

1.2 C++中的类模板

  • 以相同的方式处理不同的类型
  • 在类声明前使用template进行标识
  • <typename T> 用于说明类中使用的泛指类型T

在这里插入图片描述

1.3 类模板的应用

  • 只能 显示指定具体类型,无法 自动推导
  • 使用具体类型 <Type> 定义对象

在这里插入图片描述

  • 声明的 泛指类型T 可以出现在类模板的任意地方
  • 编译器对类模板的处理方式和函数模板 相同
    • 类模板通过具体类型产生不同的类
    • 在声明的地方对类模板代码本身进行编译
    • 在使用的地方对参数替换后的代码进行编译

1.4 编程实验:类模板初探

#include <iostream>
#include <string>

using namespace std;

template < typename T >
class Operator
{
public:
    T add(T a, T b)
    {
        return a + b;
    }
    T minus(T a, T b)
    {
        return a - b;
    }
    T multiply(T a, T b)
    {
        return a * b;
    }
    T divide(T a, T b)
    {
        return a / b;
    }
};

string operator-(string& l, string& r)
{
    return "Minus";
}

int main()
{
    Operator<int> op1;
    
    cout << op1.add(1, 2) << endl;
    
    Operator<string> op2;
    
    cout << op2.add("D.T.", "Software") << endl;
    cout << op2.minus("D.T", "Software") << endl;
    
    return 0;
}

在这里插入图片描述

1.5 类模板的工程应用(不是C++必须)

类模板必须在头文件中定义
类模板不能分开实现在不同的文件中
类模板外部定义的成员函数需要加上模板<>声明

1.6 编程实验:模板类的工程应用

在这里插入图片描述

2. 小结

  • 泛型编程的思想可以应用于类
  • 类模板以相同的方式处理不同类型的数据
  • 类模板非常适用于编写数据结构相关的代码
  • 类模板在使用时 只能 显示指定类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode】No.103. Binary Tree Zigzag Level Order Traversal -- Java Version

题目链接&#xff1a;https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ 1. 题目介绍&#xff08;Binary Tree Zigzag Level Order Traversal&#xff09; Given the root of a binary tree, return the zigzag level order traversal of its nodes’…

【网络编程】第二章 网络套接字(socket+UDP协议程序)

&#x1f3c6;个人主页&#xff1a;企鹅不叫的博客 ​ &#x1f308;专栏 C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C初阶和进阶《深入理解计算机操作系统》《高质量C/C编程》Linux ⭐️ 博主码云gitee链接&#xff1a;代码仓库地址 ⚡若有帮助可以【关注点赞收藏】…

html实训大作业《基于HTML+CSS+JavaScript红色文化传媒网站(20页)》

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

群晖修改默认端口为80、443

写之前哔哔两句 我这个人是个有强迫症的人&#xff0c;本来群晖用的好好的&#xff0c;然后觉得为什么还要输入5000、5001端口呢&#xff1f; 然后我就尝试着去修改端口&#xff0c;想修改为40、443的时候&#xff0c;结果提示端口被保留&#xff0c;这我哪能忍&#xff0c;ss…

springboot整合canal

该篇博客是基于前两篇的基础上来实现的&#xff0c;如果没有看过可以看一下前面的步骤 使用docker搭建 MYSQL主从_极速小乌龟的博客-CSDN博客docker 上面搭建mysql主从服务器https://blog.csdn.net/qq_35771266/article/details/128101019?spm1001.2014.3001.5501 ShardingS…

Matlab optimtool优化阵列天线的幅相激励

摘要&#xff1a; 阵列天线的激励幅度和相位控制着其方向图形状。例如锥削分布的幅度可实现低副瓣、递变相位激励可改变波束指向&#xff0c;采用幅相综合控制则可实现平顶波束、余割平方等波束赋形。下面介绍利用Matlab optimtool优化阵列天线的幅相激励实现上述需求。 推文…

超市结算系统|Springboot+Vue通用超市结算收银系统

作者主页&#xff1a;编程千纸鹤 作者简介&#xff1a;Java、前端、Pythone开发多年&#xff0c;做过高程&#xff0c;项目经理&#xff0c;架构师 主要内容&#xff1a;Java项目开发、毕业设计开发、面试技术整理、最新技术分享 收藏点赞不迷路 关注作者有好处 项目编号&…

JavaScript基础语法(变量)

JavaScript基础语法&#xff08;变量&#xff09; 学习路线&#xff1a;JavaScript基础语法&#xff08;输出语句&#xff09;->JavaScript基础语法&#xff08;变量&#xff09;->JavaScript基础语法&#xff08;数据类型&#xff09;->JavaScript基础语法&#xff…

(一)DepthAI-python相关接口:OAK Device

消息快播&#xff1a;OpenCV众筹了一款ROS2机器人rae&#xff0c;开源、功能强、上手简单。来瞅瞅~ 编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查…

SuperMap iPortal 与独立代理服务的 session 共享通过redis配置实现

作者&#xff1a;yx 文章目录前言一、支持的Tomcat系列二、使用步骤1.将 /lib 中所有的 jar 拷贝到 tomcat/lib 目录2.给 tomcat 添加一个系统环境变量 "catalina.base"&#xff0c;变量取值为 tomcat 的根目录3、修改 redis 的相关配置4、在 【SuperMap iPortal / i…

Dreamweaver简单网页——HTML+CSS小米官网首页的设计与实现

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

数字化时代,中小企业如何落地数字化转型

大数据时代&#xff0c;各行各业的行业龙头和大型集团都已经开始了数据管理&#xff0c;让数据成为数据资产。但是在我国&#xff0c;中小企业的数量巨大&#xff0c;很多管理者忽视了这一点&#xff0c;今天我们就来聊一聊中小企业的数字化转型。 中小企业需要数字化转型 首…

博客系统【前后端分离版本】

笔记【博客系统】 测试网站&#xff1a;小孙的博客系统 测试&#xff1a;admin 测试&#xff1a;123456 实现一个网站&#xff0c;有两种典型的风格&#xff1a; 服务器渲染客户端渲染&#xff08;前后端分离&#xff09; 所谓渲染&#xff0c;就是把一个动态页面给构造出来 页…

性能测试fangan

XX 5.0系统 性能测试方案 修订历史记录 1 项目概述 1.1 背景说明 1.2 测试目的 为保证在日常运行及大型活动期间&#xff0c;稳定运行、应用快速&#xff0c;对进行性能测试&#xff0c;验证系统是否能够达到业务所需的性能指标&#xff0c;同时发现系统中存在的性能瓶颈&a…

对辊柱塞式成型机总体设计

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1选题背景及意义 1 1.2国内外型秸秆谷物发展概况 2 1.2.1国外发展现状 2 1.2.2国内发展现状 2 1.3对辊柱塞式成型机的发展概况 6 1.3.1对辊柱塞式成型机的发展展状况 6 1.3.2对辊柱塞式成型机的成型机理 7 1.3研究主要内容 9 第二章…

UGUI性能优化学习笔记(一)网格重建

一、基本概念 在正式学习UGUI性能优化之前&#xff0c;需要先了解一些基本的概念 网格 无论是3D物体还是2D物体&#xff0c;都是由网格绘制而成。需要绘制的网格越多&#xff0c;性能消耗越大。 将Unity编译器调整到Wireframe模式&#xff0c;可以查看当前场景元素的网格组成…

冯诺依曼体系结构及操作系统的认识

目录1.前言2.冯诺依曼体系结构2.1.结构构成2.2.硬件分析2.2.1存储器的作用2.2.2CPU2.3.实际分析3.操作系统3.1.是什么3.2.为什么3.3.操作系统怎么进行管理3.3.1管理的本质3.3.2管理的方法3.4.系统调用3.5.最终体系1.前言 为什么现代计算机都被称为冯诺依曼结构计算机&#xff1…

C#运算符执行顺序对照表

C#运算符执行顺序对照表&#xff1a;在线查看C#运算符执行优先级别 窍门&#xff1a; CtrlF 快速查找 C#运算符优先级&#xff0c;是描述在计算机计算表达式时执行运算的先后顺序。 先执行具有较高优先级的运算&#xff0c;然后执行较低优先级的运算。 例如&#xff0c;我们常说…

k8s整合kong

k8s整合kong Kong网关的发展历程 ​ Kong网关起源于2007年&#xff0c;由Augusto、Marco、Michele三人在意大利的一个小车库中开发&#xff0c;当时命名为Mashup平台。在随后7年的时间里&#xff0c;Mashup平台逐渐占据API网关市场的主导地位。2017年10月&#xff0c;Mashup平台…

引擎入门 | Unity UI简介–第2部分(2)

本期我们继续为大家进行Unity UI简介&#xff08;第二部分&#xff09;的后续教程 本篇内容 3.动画按钮滑入 文章末尾可免费获取教程源代码 本篇本篇Unity UI简介&#xff08;第二部分&#xff09;篇幅较长&#xff0c;分为八篇&#xff0c;本篇为第二篇。 3.动画按钮滑入…