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++语法不允许这样做。为了解决这种问题,可以提供模板的重载,为这些特定的类型提供具体化的模板。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PCIe学习——重点提纲

PCIe学习-重点提纲 基础知识 计算机架构基础总线系统概述PCI vs PCI-X vs PCIe PCIe 概述 PCIe 的发展历史PCIe 与其他总线的对比PCIe 的优势和应用场景 PCIe 体系结构 PCIe 分层模型 物理层&#xff08;Physical Layer&#xff09;数据链路层&#xff08;Data Link Layer&…

在 KubeSphere 上快速安装和使用 KDP 云原生数据平台

作者简介&#xff1a;金津&#xff0c;智领云高级研发经理&#xff0c;华中科技大学计算机系硕士。加入智领云 8 余年&#xff0c;长期从事云原生、容器化编排领域研发工作&#xff0c;主导了智领云自研的 BDOS 应用云平台、云原生大数据平台 KDP 等产品的开发&#xff0c;并在…

[Java基本语法] 常量变量与运算符

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;线程与…

解决Java项目运行时错误:“Command line is too long”

在开发Java应用的过程中&#xff0c;你可能偶尔会遇到“Error running ‘Application’: Command line is too long”的问题。这是因为Java虚拟机&#xff08;JVM&#xff09;在启动时&#xff0c;如果传递给它的类路径&#xff08;classpath&#xff09;过长&#xff0c;超过了…

1080 MOOC期终成绩

solution 输出合格的学生信息&#xff0c;其中所谓合格需要同时满足 在线编程成绩>200总评成绩>60 总评计算方法为 当期中成绩>期末成绩时&#xff0c;总评期中成绩0.4期末成绩0.6否则&#xff0c;总评期末成绩 通过map建立学号和学生信息间的关联&#xff0c;否则直…

YOLOv10改进 | 注意力篇 | YOLOv10引入Polarized Self-Attention注意力机制

1. Polarized Self-Attention介绍 1.1 摘要:像素级回归可能是细粒度计算机视觉任务中最常见的问题,例如估计关键点热图和分割掩模。 这些回归问题非常具有挑战性,特别是因为它们需要在低计算开销的情况下对高分辨率输入/输出的长期依赖性进行建模,以估计高度非线性的像素语…

AI引领数字安全新纪元,下一代身份基础设施如何帮助企业破局?

近日&#xff0c;Open AI正式发布面向未来人机交互范式的全新大模型GPT-4o&#xff0c;具有文本、语音、图像三种模态的理解力&#xff0c;无疑代表着人工智能技术的又一重大跃进。 人工智能技术领域不断创新和发展&#xff0c;为各行各业带来巨大的生产变革和经济增长的同时&…

RockChip Android12 Settings二级菜单

一:概述 本文将针对Android12 Settings的二级菜单System进行说明。 二:System 1、Activity packages/apps/Settings/AndroidManifest.xml <activityandroid:name=".Settings$SystemDashboardActivity"android:label="@string/header_category_system&quo…

关于Hutool的模块使用说明方法

Hutool包含多个模块&#xff0c;每个模块针对特定的功能需求提供支持&#xff1a;• hutool-aop&#xff1a;JDK动态代理封装&#xff0c;为非IOC环境提供切面支持。• hutool-bloomFilter&#xff1a;布隆过滤器&#xff0c;提供基于Hash算法的实现。• hutool-cache&#xff…

Day 26:2288. 价格减免

Leetcode 2288. 价格减免 句子 是由若干个单词组成的字符串&#xff0c;单词之间用单个空格分隔&#xff0c;其中每个单词可以包含数字、小写字母、和美元符号 ‘$’ 。如果单词的形式为美元符号后跟着一个非负实数&#xff0c;那么这个单词就表示一个 价格 。 例如 “$100”、…

Corrupt JPEG data: 2 extraneous bytes before marker 0xd9

场景 异常&#xff1a;Corrupt JPEG data: 2 extraneous bytes before marker 0xd9 python语言&#xff0c;CV2读图像数据集&#xff0c;训练目标检测模型。在数据集分批送入模型训练过程中&#xff0c;出现大片图片异常情况。 &#xff08;建议直接去看修复图像方法二&…

做一个30点的四面体结构

这个结构有7层&#xff0c;每层有1&#xff0c;1&#xff0c;3&#xff0c;3&#xff0c;6&#xff0c;6&#xff0c;10个点&#xff0c;共30个点。 30个点的坐标是 {0.0,0.0,6.12372435695795}, {0.0,0.0,0.0}, {-2.8868,-5.0,-2.04124145231931}, {-2.8868,5.0,-2.0412414…

设计神器创作利器矢量图形编辑软件CorelDRAW2024重磅发布啦!

CorelDRAW2024&#xff0c;一款让你的创作无限可能的神器&#xff01;&#x1f3a8;✨ 你是否曾经在寻找一款功能强大、操作简便的设计软件&#xff1f;那么&#xff0c;让我来为你种草一款神奇的产品——CorelDRAW2024&#xff01;&#x1f389;&#x1f929; CorelDRAW全系列…

客户为先,自研为基 | YashanDB产品进化之旅

作为一款全自研的数据库产品&#xff0c;崖山数据库致力于构建自主可控的全栈数据库产品体系&#xff0c;以满足行业用户多元化的需求。 从第一行代码到完整的数据库产品体系&#xff0c;我们为何选择从0到1自研数据库&#xff1f;我们经历了哪些关键的产品节点&#xff1f;每个…

等保2.0对于物联网设备的漏洞管理还有哪些规定?

等保2.0针对物联网设备的漏洞管理&#xff0c;主要规定了以下几个方面&#xff1a; 1. 漏洞发现与识别&#xff1a;要求定期进行漏洞扫描和评估&#xff0c;利用专业的漏洞扫描工具和安全服务&#xff0c;及时发现物联网设备及其软件中的安全漏洞。这包括但不限于操作系统、应…

langchain教程-(1)Prompt模板

LangChain 的核心组件 模型 I/O 封装 LLMs&#xff1a;大语言模型Chat Models&#xff1a;一般基于 LLMs&#xff0c;但按对话结构重新封装PromptTemple&#xff1a;提示词模板OutputParser&#xff1a;解析输出 数据连接封装 Document Loaders&#xff1a;各种格式文件的加载…

扭蛋机小程序:深度探索虚拟寻宝之旅的乐趣

引言 扭蛋机小程序&#xff0c;这个融合了传统与创新的虚拟寻宝乐园&#xff0c;已经吸引了无数玩家的目光。在这个充满惊喜和挑战的虚拟世界里&#xff0c;每一个扭蛋都可能蕴藏着无尽的宝藏。本文将带您深入探索扭蛋机小程序的魅力所在&#xff0c;体验一场别开生面的虚拟寻…

查看服务器端口,如何查看服务器端口是多少并修改

查看服务器端口并修改内容是一个涉及网络管理和系统配置的专业任务。以下是一个详细的步骤说明&#xff0c;用于查看和修改服务器端口。 一、查看服务器端口 1. 使用命令行工具&#xff1a; - 对于Linux或Unix系统&#xff0c;可以使用netstat、lsof或ss等命令来查看端口状…

反馈型振荡器

目录 反馈型振荡器分类 基本工作原理 启动过程 “心脏”LC振荡 起振条件 平衡条件 稳定条件 互感耦合振荡器 电感三端LC振荡器 电容三端LC振荡器 串联改进电容三端式振荡器 并联改进电容三端式振荡器 相位平衡条件的判断准则 反馈型振荡器分类 基本工作原理 启动过…

【ajax基础02】URL详解

一&#xff1a;什么是URL 统一资源定位符(Uniform Resource Locator,缩写&#xff1a;URL),简称网址 二&#xff1a;URL组成 https://baidu.com/index.html 协议 https协议&#xff1a;超文本传输协议&#xff0c;规定了浏览器和服务第之间传输数据的格式 域名&#xff08;在…