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

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.dtcms.com/a/276366.html

相关文章:

  • 人工智能大语言模型提供了一种打败小朋友十万个为什么的捷径
  • 附件1.2025年世界职业院校技能大赛赛道简介
  • 1. JVM介绍和运行流程
  • 计算机毕业设计springboot的零食推荐系统 基于SpringBoot的在线零食商城个性化推荐平台 JavaWeb驱动的智能零食选购与推荐系统
  • HT8313功放入门
  • 【论文阅读】HCCF:Hypergraph Contrastive Collaborative Filtering
  • 创建uniapp项目引入uni-id用户体系使用beforeRegister钩子创建默认昵称
  • Pandas-数据加载与保存
  • Can201-Introduction to Networking: Application Layer应用层
  • 深入解析 Stack 和 Queue:从原理到实战应用
  • 【读书笔记】从AI到Transformer:LLM技术演进全解析
  • 推荐系统-Random算法
  • jieba 库:中文分词的利器
  • 【Lucene/Elasticsearch】**Query Rewrite** 机制
  • day68—DFS—二叉树的所有路径(LeetCode-257)
  • 微信小程序form组件的使用
  • 从json中提取i18n字段
  • nodej获取当前系统的cpu架构信息
  • 程序员软技能之推广营销-04-长尾效应(Long Tail Effect)
  • UnityShader——SSAO
  • C++类模版1
  • Linux进程的生命周期:状态定义、转换与特殊场景
  • 【Elasticsearch】检索模板(Search Template)
  • 从输入到路径:AI赋能的地图语义解析与可视化探索之旅(2025空间智能全景)
  • C++ Boost 自动链接机制详解
  • Java基础:泛型
  • 单调栈单调队列【算法进阶】
  • 11. JVM中的分代回收
  • 数据结构自学Day6 栈与队列
  • BaseDao 通用查询方法设计与实现