模板特化

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(使用前将#替换为@)

模板特化 的相关文章

  • c++11新特性之独占指针unique_ptr

    独占智能指针unique ptr 独占智能指针不允许其他智能指针共享内部的指针 可以通过它的构造函数初始化一个独占智能指针对象 但是不允许通过赋值将一个unique ptr赋值给另一个unique ptr unique ptr不允许复制 但
  • c++模板与泛型编程

    函数模板 template
  • C++:职工管理系统

    职工管理系统 cpp include
  • C++虚函数详解

    C 虚函数详解 前言 C 的特性使得我们可以使用函数继承的方法快速实现开发 而为了满足多态与泛型编程这一性质 C 允许用户使用虚函数 virtual function 来完成 运行时决议 这一操作 这与一般的 编译时决定 有着本质的区别 虚
  • 【c++中的细节问题】关于typedef的详细用法

    请见 C C typedef用法详解 真的很详细 superhoy的专栏 CSDN博客 c typedef
  • C++继承和多态

    C 继承和多态 继承 继承的本质 代码的复用 在基类中给所有派生类提供统一的虚函数接口 让派生类进行重写 然后就可以使用多态了 类和类的关系 a part of 一部分关系 继承 a kind of 一种的关系 继承引入了一些概念 基类 父
  • C/C++服务器和客户端交互笔记

    C C 服务器开发 网络与通信Socket Socket通信三要素 通信的目的地址 使用的端口号 http 80 smtp 25 使用的传输协议 TCP UDP nslookup xx 可以查询xx网址的IP地址 Socket通信模型 te
  • 「C++学习笔记」面向.Net Core的(C++)CLR类库非专业入门(+使用Opencv)

    关键词 C CLR Net Core Net Famework Opencv C 目录 什么是CLR类库 本文说明 创建Demo程序 调用dll 通过项目引用 通过dll文件引用 其他还没完全清楚的坑 有关C CLI这块的资料真的很少而且都
  • C++绑定器和函数对象

    C 绑定器和函数对象 简介 C STL中的绑定器 bind1st operator 的第一个形参变量绑定一个确定的值 bind2nd operator 的第二个形参变量绑定一个确定的值 C Boost库 C 的Boost库中引入了bind绑
  • C++ 继承(1): 继承方式(public, protected, private)

    C 继承 1 继承方式 public protected private 继承中的特殊关系 隐藏 is a 在水一方xym的博客 CSDN博客 C 远征之继承篇 视频教程 笔记 方便自己查阅和复习 温故而知新 目录 1 c 继承简介 代码示
  • C++类的三大特性之继承

    目录 一 继承的概念与使用 lt 1 gt 什么是继承 lt 2 gt 如何使用 二 基类与派生类间的转换 三 继承的作用域 四 派生类的默认成员函数 lt 1 gt 构造函数 lt 2 gt 拷贝构造 lt 3 gt 赋值运算符重载 lt
  • C++中const,指针和引用

    C 中的const 指针和引用 在线C C 编译器 可以试着运行代码 C 中的const 在C语言中 const修饰的量称为常变量 在编译过程中 const就是当成变量的编译生成指令的 不可以直接修改它的值 但是可以通过地址进行修改其对应的
  • C/C++学习——自定义数据类型——链表

    链表的概念 一 链表的概念 1 链表是一种存储空间能动态进行增长或缩小的数据结构 2 链表主要用于 1 建立不定长度的数组 2 可以在不重新安排整个存储结构的情况下 方便且迅速地插入和删除数据元素 3 链表广泛应用于数据管理中 二 结点 s
  • 模板特化

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

    C 面向对象程序设计 编程模拟实现个人银行的存款业务 要求 1 提供两种账户 活期存款账户CheckingCustom和定期存款账户FixedCustom 2 创建活期账户时 必须提供账户名和开户金额 而账号则根据存款分类自动生成 3 不论
  • 【c++中的细节问题】C++何时需要自定义析构函数呢?

    请见 https blog csdn net love9099 article details 43086945
  • C#—DataTable常见用法

    1 构建DataTable数据源 DataTable dt new new DataTable dt new Columns Add column1 typeof string dt new Columns Add column2 type
  • 【C++学习笔记】三、C++的数据类型、存储以及基本运算

    本文记录了C 中的数据类型以及基本运算 这部分是典型的每次记每次忘类型 所以烙印在此 以便用时随时查阅 主要参考 http www runoob com cplusplus cpp data types html 1 C 中的数据类型 1
  • C++模板-33-类模板和函数模板的区别

    这篇开始学习类模板相关知识 本篇主要学习什么是类模板 还有类模板和函数模板的区别 1 类模板语法 template
  • C#8.0本质论第十六章--使用查询表达式的LINQ

    C 8 0本质论第十六章 使用查询表达式的LINQ 像SQL这样的专业查询语言虽然容易阅读和理解 但又缺乏C 语言的完整功能 这正是C 语言设计者在C 3 0中添加 查询表达式 语法的原因 本章大部分都类似于SQL 一般不会使用到 在用到的

随机推荐

  • 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的数据
  • 模板特化

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