当前位置: 首页 > news >正文

C++ 65 之 模版的局限性

#include <iostream>
#include <cstring>
using namespace std;class Students05{
public:string m_name;int m_age;Students05(string name, int age){this->m_name = name;this->m_name = age;}
};// 两个值进行对比的函数
template<typename T>
bool myCom(T& a, T& b){if (a == b){return true;}else{return false;}
}
// 重载 == 也可以实现,不过这里采用特殊模板
// 利用具体化,实现对于自定义的类型进行对比 需要提供特殊模板
template<> bool myCom(Students05& a, Students05& b){if(a.m_name == b.m_name && a.m_age == b.m_age){return true;}else{return false;}
}int main()
{// int a = 1;// int b = 2;// bool res = myCom(a,b);// if(res){//     cout << "a==b" << endl;// }// else{//     cout << "a!=b" << endl;// }Students05 stu1("张三",18);Students05 stu2("李四",20);bool res = myCom(stu1,stu2);if(res){cout << "a==b"<< endl;}else{cout << "a!=b"<< endl;}return 0;
}

 

模板的局限性

假设有如下模板函数:

template<class T>

void f(T a, T b)

{  }

如果代码实现时定义了赋值操作 a = b,但是T为数组,这种假设就不成立了

同样,如果里面的语句为判断语句 if(a>b),但T如果是结构体,该假设也不成立,另外如果是传入的数组,数组名为地址,因此它比较的是地址,而这也不是我们所希望的操作。

总之,编写的模板函数很可能无法处理某些类型,另一方面,有时候通用化是有意义的,但C++语法不允许这样做。为了解决这种问题,可以提供模板的重载,为这些特定的类型提供具体化的模板。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 力扣1206--跳表
  • 笔记-python里面的xlrd模块详解
  • linux系统宝塔服务器temp文件夹里总是被上传病毒php脚本
  • Linux中git无法提交,出现不知道身份时的错误,无法检测到有效的电子邮件地址以关联代码的提交
  • 隧道代理是什么?怎么运作的?
  • 钡铼技术BL104在环境监测站多协议采集保障数据全面准确
  • mysql建立支持中文字符的库
  • sslyze一键检查服务器检查服务器的 SSL/TLS 安全性(KALI工具系列二十五)
  • Vue32-挂载流程
  • 一些常用的git指令总结
  • 7.无代码爬虫八爪鱼采集器软件——采集规则/项目的创建与网址输入
  • 推荐一个github项目
  • Pikachu靶场--文件包含
  • 解决使用Jmeter进行测试时出现“302“,‘‘401“等用户未登录的问题
  • Ubuntu修改MySQL的tmpdir参数失败的解决方法
  • 11111111
  • Angular2开发踩坑系列-生产环境编译
  • co.js - 让异步代码同步化
  • Fabric架构演变之路
  • gitlab-ci配置详解(一)
  • js递归,无限分级树形折叠菜单
  • Node + FFmpeg 实现Canvas动画导出视频
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Redux 中间件分析
  • Travix是如何部署应用程序到Kubernetes上的
  • 将 Measurements 和 Units 应用到物理学
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 入门级的git使用指北
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 我有几个粽子,和一个故事
  • 赢得Docker挑战最佳实践
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • # Redis 入门到精通(七)-- redis 删除策略
  • $.proxy和$.extend
  • (160)时序收敛--->(10)时序收敛十
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (三)mysql_MYSQL(三)
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (一)Thymeleaf用法——Thymeleaf简介
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • ***通过什么方式***网吧
  • .bat批处理(六):替换字符串中匹配的子串
  • .gitignore文件使用
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net core控制台应用程序初识
  • .Net Core中Quartz的使用方法
  • .Net mvc总结
  • .NET 直连SAP HANA数据库
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .Net7 环境安装配置