模板特化

2023-11-15

上一篇《模板与重载》里,我遇见了想同时使用模板函数与非模板函数的情况。后来才知道,其实并不需要,当我想对某些特定的类型进行特殊操作时,只需要使用模板特化就可以。

所谓特化,就是说对于模板函数,对于某些类型可能需要特殊处理,所以进行特殊化。可以分为特化与偏特化,其实就是将模板列表中的模板全部特化还是部分特化。
使用 template<> 来告诉编译器,这是一个特化的模板。

  • 类模板:
    template<class T>
    class whatever{
    private:
        T x;
    public:
       whatever(T _x): x(_x) {};
    }
    template<>
    class whatever<char*>{
    private:
        char* x;
        int length;
    public:
       whatever(char* _x) {
           length = strlen(_x) + 1;
           x = new char[length];
           memcpy(x, _x, length);
       }
       ~whatever(){
           delete[] x;
       }
    }
    
    如上就是类模板的特化。最开始template<>指明这是模板的特化,然后在定义的时候<char*>指明是对char*类型的特化。
  • 函数模板:
    template<class T>
    int type(T){
       return 1;
    }
    template<>
    int type<int>(int){
       return 0;
    }
    template<>
    int type(float){
       return 1;
    }
    
    如上就是类模板的特化。与类模板的特化基本相同。不过如果模板类型出现在了返回值或者传入参数中时,定义中的模板参数列表可以省略,如上面对float的特化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模板特化 的相关文章

随机推荐

  • Spring扫描类的原理

    作为Java的开发者Spring可以称之为神一样的存在框架 好处太多无法用言语表达只能称之为Java排名的number one 框架 我们使用Spring它帮助我们实例化了很多Bean对象 但是这些Bean是怎样加载到Spring容器中的呢
  • LeetCode:Binary Tree Preorder Traversal(非递归方法前序遍历二叉树)

    Given a binary tree return the preorder traversal of its nodes values For example Given binary tree 1 2 3 1 2 3 return 1
  • clinvar数据库(1)

    遗传变异的数据库注释非常简单 就是从数据库里面下载记录文件 然后根据坐标对应一下即可 甚至很多成熟的工具都可以自动下载数据库以及比对 就跟我们前面讲到的把vcf文件注释到dbSNP数据库的ID一样简单 而clinvar的注释 可以寻找出对应
  • 百度翻译参数逆向过程

    翻译网站sign参数逆向 网址 aHR0cHM6Ly9mYW55aS5iYWlkdS5jb20v JS调试 加密参数sign 使用XHR断点 再查看方法调用栈 很容易定位到加密函数 经测试 原来就是这个b函数进行的加密 参数就是我们要翻译的
  • Python3.8+Pytorch1.0+CUDA11.1环境配置+安装pytorch-geometric

    1 conda创建环境 conda create n gnn python 3 8 2 安装pytorch pip install torch 1 9 0 cu111 torchvision 0 10 0 cu111 torchaudio
  • 国产开源IoTOS:腾讯物联网操作系统TencentOS Tiny的探索与实践

    导语 腾讯物联网终端操作系统 TencentOS tiny 是腾讯面向物联网领域自主研发的嵌入式实时操作系统 可助力物联网终端设备及业务快速接入腾讯云物联网平台 本文是对腾讯高级工程师汪礼超 赵健在云 社区 online 分享的整理 为大家
  • python操作word表格,并修改表格内容

    1 安装win32com client库 pip install pywin32 2 导包 import win32com client 3 总代码 import os import win32com client 创建 Word 应用程序
  • MySQL 在windos安装和遇到问题

    目录 一 安装 1 下载 2 安装MySQL 二 出现问题如下
  • Harvard transformer NLP 模型 openNMT 简介入门

    项目网址 OpenNMT Open Source Neural Machine Translation logo 一 从应用的层面先跑通 Harvard transformer GitHub harvardnlp annotated tra
  • 解决 An attempt was made to call a method that does not exist. 问题详解

    哈喽大家好 我是阿Q 今天在开发代码的过程中 由于手抖 不知道引入了什么包依赖 导致项目启动一直报错 特写本文来记录下解决问题的经过 文章目录 问题描述 报错信息如下 报错描述 解决方法 总结 有想赚点外块 技术交流的朋友 欢迎来撩 问题描
  • POI生成带图片Word

    RequestMapping exportHt public void exportHt RequestParam fid String fid HttpServletResponse response throws Exception i
  • linux移动文件到另一个文件夹命令_Linux 使用 mv 命令重命名或移动文件

    使用方法 split help 用法 mv 选项 T 源 目标 mv 选项 源 目标 mv 选项 t 目标 源 重命名或者移动文件 目录 长选项必须使用的参数对于短选项时也是必需使用的 b 类似 backup 选项 但不接受参数 覆盖前先备
  • ZooKeeper(八)伸缩性

    一 ZooKeeper中Observer 1 1 ZooKeeper角色 经过前面的介绍 我想大家都已经知道了在ZooKeeper集群当中有两种角色Leader和Follower Leader可以接受client 请求 也接收其他Serve
  • 记一次JVM参数调优经历

    1 背景 定时任务每秒向客户端推送10w全量数据 预计最大有30M 两个用户系统勉强能用 六个 几分钟后系统不可用 频发full gc 导致系统不可用 2 最终方案 3 常见参数介绍 3 1 jps jps查看所有java进程编号 相当与
  • 顺序栈的基本操作(初始化、销毁、判空等)

    1 实验目的 通过该实验 让学生掌握栈的相关基本概念 认识栈是插入和删除集中在一端进行的线性结构 掌握栈的 先入后出 操作特点 栈在进行各类操作时 栈底指针固定不动 掌握栈空 栈满的判断条件 2 实验内容 用顺序存储结构 实现教材定义的栈的
  • 最大子数组之和对应的子数组

    给定一个整数数组 包含正负数 找到一个具有最大和的子数组 返回其最大的子数组 public static List
  • [译]理解HTTP/304响应

    原文 http www telerik com automated testing tools blog eric lawrence 12 11 06 understanding http 304 responses aspx 刚刚开始使用
  • 【JetBrains】安装使用技巧

    JetBrains 使用 JetBrains Toolbox 管理 IDE 远程开发 Gateway 通过 SSH 连接 疑难杂症 1 部署失败 使用 JetBrains Toolbox 管理 IDE 下载 Toolbox 工具 解压运行
  • Wireshark常用命令

    目录 页面 命令 不定期更新我自己遇到的语法 页面 命令 数据链路层 筛选mac地址为04 f9 38 ad 13 26的数据包 eth src 04 f9 38 ad 13 26 筛选源mac地址为04 f9 38 ad 13 26的数据
  • 模板特化

    上一篇 模板与重载 里 我遇见了想同时使用模板函数与非模板函数的情况 后来才知道 其实并不需要 当我想对某些特定的类型进行特殊操作时 只需要使用模板特化就可以 所谓特化 就是说对于模板函数 对于某些类型可能需要特殊处理 所以进行特殊化 可以