首页 > 其他分享 >类模板

类模板

时间:2024-12-01 12:32:22浏览次数:4  
标签:class display template MyClass public 模板

[Lang] 类模板

完全特化与偏特化:

特性 完全特化(Full Specialization) 偏特化(Partial Specialization)
定义 为特定类型提供完全的实现 为类型参数的部分组合提供定制的实现
模板参数 必须指定所有的模板参数 可以只指定一个或部分模板参数
示例 template <> class MyClass<int> {...} template <typename T2> class MyClass<int, T2> {...}
#include <iostream>
using namespace std;

// 通用类模板
template <typename T>
class MyClass {
public:
    void display() {
        cout << "Generic template" << endl;
    }
};

// 对 int 类型进行完全特化
template <>
class MyClass<int> {
public:
    void display() {
        cout << "Specialized for int" << endl;
    }
};

int main() {
    MyClass<double> obj1;
    obj1.display();  // 输出:Generic template

    MyClass<int> obj2;
    obj2.display();  // 输出:Specialized for int

    return 0;
}
#include <iostream>
using namespace std;

// 通用类模板
template <typename T, typename U>
class MyClass {
public:
    void display() {
        cout << "Generic template" << endl;
    }
};

// 对第一个参数为 int 类型进行偏特化
template <typename U>
class MyClass<int, U> {
public:
    void display() {
        cout << "Partial specialization: T is int" << endl;
    }
};

// 对第一个参数为指针类型进行偏特化
template <typename T, typename U>
class MyClass<T*, U> {
public:
    void display() {
        cout << "Partial specialization: T is pointer" << endl;
    }
};

int main() {
    MyClass<double, double> obj1;
    obj1.display();  // 输出:Generic template

    MyClass<int, double> obj2;
    obj2.display();  // 输出:Partial specialization: T is int

    MyClass<double*, double> obj3;
    obj3.display();  // 输出:Partial specialization: T is pointer

    return 0;
}

标签:class,display,template,MyClass,public,模板
From: https://www.cnblogs.com/yaoguyuan/p/18579685

相关文章

  • 2024年值得推荐的6款 Vue 后台管理系统模板,开源且免费!
    前言在现今的软件开发领域,Vue.js凭借其高效、灵活和易于上手的特性,成为了前端开发的热门选择。对于需要快速搭建企业级后台管理系统的开发者而言,使用现成的Vue后台管理系统模板无疑是一个明智之举。本文大姚将为你推荐6款开源、免费(基于MITLicense开源协议)、开箱即用的Vue后台......
  • 计算机配置 → 管理模板 → Windows 组件- 数据收集和预览版本- 允许诊断数据 ---已
    计算机配置→管理模板→Windows组件-数据收集和预览版本-允许诊断数据---已启用诊断数据关闭禁用"允许发送Windows诊断数据中的设备名称"在隐私方面的影响主要体现在以下几个方面。设备名称是Windows诊断数据的一部分,它通常包含硬件的详细信息,如计算机名称、型......
  • ACM输入输出模板(上)【Java、C++版】
    文章目录1、多行输入,每行两个整数C++Java2、多组数据,每组第一行为n,之后输入n行两个整数C++Java3、输入若干行,每行输入两个整数,遇到特定条件终止C++Java4、若干行输⼊,遇到0终止,每行第⼀个数为N,表示本行后面有N个数C++Java5、若干行输入,每行包括两个整数a和b,由空格分隔......
  • zblog模板文章发布时间格式详细说明
    设置项:提供两种样式:显示具体时间和显示倒计时时间(如“1小时前”)。倒计时时间无需额外设置。显示具体时间的默认格式:默认格式为“年-月-日时:分”,对应的格式字符串为“Y-m-dH:i”。时间格式代码:年:Y:四位数字,如“1999”y:两位数字,如“99”月:F:英文全名,如“J......
  • 【知识】网络流模板梳理&题型总结
    基础知识,OI-Wiki,网络流24题,大佬博客模板:EK求最大流here#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=1005,M=20005,INF=1e8;intn,m,S,T;inth[N],e[M],f[M],ne[M],idx;intq[N],d[N],pre[N];boolst[N];vo......
  • vue基础之3:模板语法、数据绑定
    欢迎来到“雪碧聊技术”CSDN博客!在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目......
  • 判断正则二叉树———概念 + 实现模板 + 例题详解(简单易懂)
    判断正则二叉树递归判断概念正则二叉树(RegularBinaryTree):但每个节点要么有两个子节点,要么是叶子节点。实现思路1.设置递归终止条件(1)空节点(node==nullptr)————>returntrue;(2)只有一个子树(!root->left&&root->rig......
  • Halcon——使用Halcon模板匹配助手自动生成模板匹配代码
    1.找到模板助手模板助手的位置在菜单栏,助手——>打开新的Maching当出现下面这种弹窗时,就说明你已经成功找到Halcon模板匹配助手啦~2.模板匹配助手的操作流程read_image(Image,'D:/CStest/Halcon/MachineVision-main/CodeSet/test_image/1.png')(1)创建先读一张图片,这......
  • 洛谷题单指南-线段树-P3373 【模板】线段树 2
    原题链接:https://www.luogu.com.cn/problem/P3373题意解读:对于序列a[n],支持三种操作:1.对区间每个数乘上一个数2.对区间每个数加上一个数3.求区间和解题思路:由于支持乘、加两种区间修改操作,是线段树的另一种典型应用:多个懒标记显然,这里需要两个懒标记,mul表示对子节点区间每个......
  • 【模板】exgcd
    #include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e6+10;intT,a,b,c,d,x,y,num;intexgcd(inta,intb,int&x,int&y){ if(b==0){ x=1;y=0;returna; } intd=exgcd(b,a%b,x,y); intz=x;x=y;y=z-(a/b)*y......