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

C++类模版2

类模版实例化出的对象,向函数传参的方式。

1.一共三种传入的类型  --直接显示对象的数据类型

2.参数模版化                --将对象中的参数编程模版进行传递

3.整个类模版化             --将这个对象类型 模版化进行传递

#include <iostream>
using namespace std;//类模版对象做函数参数
template <typename T1,typename T2>
class Person{public:Person(T1 name, T2 age){this->m_Name=name;this->m_Age=age;}void showPerson(){cout<<"Name: " << m_Name << ", Age: " << m_Age << endl;}T1 m_Name;T2 m_Age;
};//1.指定传入类型
//使用引用的方式进行传入,这样我们就可以直接拿到这个person的本体
void printPerson(Person<string,int> &p)
{p.showPerson();
}void test01()
{Person<string,int> p("孙悟空",100);printPerson(p);}int main() {test01();return 0;
}

将参数模版化

//将参数模版化
template <typename T1, typename T2>
void printPerson2(Person<T1,T2> &p)
{p.showPerson();cout<<"T1的类型为: "<<typeid(T1).name()<<endl;cout<<"T2的类型为: "<<typeid(T2).name()<<endl;
}
void test02()
{Person<string,int> p("猪八戒",99);printPerson2(p);
}int main() {//test01();test02();return 0;
}

因此最终其输出为这个。

将整个类都模版化

template <typename T>
void printPerson3(T &p)
{p.showPerson();cout<<"T1的类型为: "<<typeid(T).name()<<endl;//这里的T是Person<string,int>类型cout<<"T2的类型为: "<<typeid(typename T::T2).name()<<endl; //使用typename来获取类模版中的类型
}
//将整个类都模版化
void test03()
{Person<string,int> p("唐僧",30);p.showPerson();cout<<"T1的类型为: "<<typeid(string).name()<<endl;cout<<"T2的类型为: "<<typeid(int).name()<<endl;
}int main() {//test01();test03();return 0;
}

在实际开发中,第一种最实用。

http://www.xdnf.cn/news/15222.html

相关文章:

  • BERT:双向Transformer革命 | 重塑自然语言理解的预训练范式
  • 事件驱动设计:Spring监听器如何像咖啡师一样优雅处理高并发
  • Linux的NetworkManager的nmcli配置网桥(bridge) 笔记250712
  • Linux操作系统之进程间通信:共享内存
  • 同步、异步、阻塞、非阻塞之间联系与区别
  • SOEM build on ubuntu
  • 2025Stockapi股票数据接口,股票实时数据,技术指标macd,kdj,cci技术指标算法,集合竞价数据,龙虎榜数据接口
  • 【图像处理基石】如何入门大规模三维重建?
  • Gameplay - 独立游戏Celeste的Player源码
  • Unity开发中常用的洗牌算法
  • 用 Jpom 10 分钟搭好一套轻量级 CICD + 运维平台
  • Python技巧记录
  • 电网失真下单相锁相环存在的问题
  • Redis专题总结
  • 【工具】什么软件识别重复数字?
  • AI产品经理面试宝典第11天:传统软件流程解析与AI产品创新对比面试题与答法
  • 分布式数据库系统模式结构深度解析
  • C++ 模板工厂、支持任意参数代理、模板元编程
  • 科技驯服烈日狂沙:中东沙漠农场的光储革命
  • 开发AI Agent到底用什么框架——LangGraph VS. LlamaIndex,一文看懂!
  • 使用Java完成下面程序
  • docker 443错误 lookup docker.mirrors.ustc.edu.cn: no such host
  • CCF CSP第一轮认证一本通
  • 深度学习-卷积化
  • 【离线数仓项目】——电商域DWD层开发实战
  • 【C++小白逆袭】内存管理从崩溃到精通的秘籍
  • EPLAN 电气制图(七):电缆设计全攻略
  • 【设计模式】外观模式(门面模式)
  • 人工智能安全基础复习用:可解释性
  • NestJS 系列教程(五):守卫(Guards)与 JWT 用户认证