首页 > 其他分享 >类模板对象做函数参数

类模板对象做函数参数

时间:2024-12-07 14:32:54浏览次数:6  
标签:对象 void 函数参数 模板 template showPerson

学习目标:
类模板实例化出的对象,向函数传参的方式
一共有三种传入方式:
1.指定传入的类型=直接显示对象的数据类型
2.参数模板化
=将对象中的参数变为模板进行传递
3.整个类模板化===将这个对象类型 模板化进行传递

#include <iostream>
using namespace std;
#include <string>

//类模板对象做函数参数 
template<class T1,class T2>
class Person
{
public:
    Person(T1 name,T2 age)
    {
        this->m_Name=name;
        this->m_Age=age;
    }
    void showPerson()
    {
        cout<<"姓名:"<<this->m_Name<<"年龄:"<<this->m_Age<<endl;
    }
    T1 m_Name;
    T2 m_Age;
};
//1.指定传入类型
void printPerson1(Person<string,int>&p)//类模板对象做函数参数
{
    p.showPerson();
}
void test01()
{
    Person<string,int>p("孙悟空",100);
    printPerson1(p);
}
//2.参数模板化
template<class T1,class 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);
}
//3.整个类模板化
template<class T>
void printPerson3(T &p)
{
    p.showPerson();
    cout<<"T的数据类型:"<<typeid(T).name()<<endl;
}
void test03()
{
    Person<string,int>p("唐僧",30);
    printPerson3(p);
}
int main() 
{
    //test01();
    //test02();
    test03();
    return 0;
}

总结:
通过类模板创建的对象,可以有三种方式向函数中进行传参
使用比较广泛是第一种:指定传入类型

标签:对象,void,函数参数,模板,template,showPerson
From: https://www.cnblogs.com/RX1Ri/p/18591663

相关文章

  • 蓝桥杯 2024 省赛 C++ B组 R 格式 (JAVA面向对象 高精度 纯api题解)
    解题思路:由于数位较大这里采用高精度,又因为高精度写起来比较麻烦所以这里直接采用JAVAapi中的高精度浮点数类型和高精度整数类型,应为高精度浮点数类型四舍五入较为麻烦所以这里改为手动四舍五入importjava.math.BigDecimal;importjava.math.BigInteger;importjava.util......
  • 细数适合使用模板的十大行业
    移动支付给大家生活带来便利的同时,也促使更多商家开始了数字化转型,越来越多的商家及企业开始使用模板软件进行线上交易,那么,哪些行业可以直接使用模板软件呢?带大家详细了解下吧!餐饮行业:餐饮行业可以通过模板软件快速搭建点餐、外卖、预约、会员管理等功能的小程序。例如,点餐小......
  • gofiber: 模板:同名的参数会被覆盖
    一,代码1,go代码//用户登录func(uc*UserController)UserLogin(c*fiber.Ctx)error{ //返回map1 myMap1:=fiber.Map{} myMap1["name"]="老刘" myMap1["title"]="植物造林" err1:=c.Bind(myMap1) iferr1!=nil{ returnc.SendStr......
  • 面向对象进阶-03-static的注意事项
    static的注意事项:静态方法只能访问静态变量和静态方法非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法静态方法中没有this关键字总结:静态方法中,只能访问静态非静态方法可以访问所有静态方法中没有this关键字 创建一个Javabean类......
  • js怎样避免原型链上的对象共享?
    在JavaScript中,原型链上的对象共享是继承机制的副作用。虽然它带来了代码复用和内存效率的好处,但也可能导致意外的修改影响到所有继承该原型的对象。为了避免这种情况,你需要打破原型链,创建对象的副本而不是直接引用原型上的属性。以下是一些常见的方法:1.使用Object.create(nu......
  • 软件开发中业务对象包装设计的最佳实践
    目录前言1.包装实体类的核心概念1.1普通Java对象(POJO)1.2数据传输对象(DTO)1.3持久化对象(PO)1.4视图对象(VO)1.5业务对象(BO)1.6数据对象(DO)1.7实体对象2.包装实体类的设计原则2.1单一职责原则2.2解耦与内聚2.3封装与安全2.4代码复用与扩展性3.具体设计实现3.1......
  • 写一个方法遍历指定对象的所有属性
    functionenumerateProperties(obj){constproperties=[];for(constkeyinobj){if(obj.hasOwnProperty(key)){//过滤掉继承的属性properties.push({name:key,value:obj[key]});}}returnproperties;}//......
  • C++天使的灵动心跳代码:类和对象(中上)
    文章目录1.类的六大默认成员函数2.构造函数2.1默认构造函数2.2显式调用构造函数3.析构函数3.1默认析构函数3.2显式调用析构函数希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力!本篇将介绍类和对象中的重点部分,六大函数中的前四个尤为重要,所以......
  • 深入浅出ArkTS开发指南之调用接口将 json 对象渲染到界面
    大家好,我是全栈的峰哥,独立开发者,相关问题可以加v:2588234,联系我一起沟通今天主要给大家带来通过调用接口,通过返回参数转换成我们需要的对象,并通过状态管理,渲染到界面上,主要案例是在首页需要调用轮播图接口list,并在首页上能展示轮播图定义实体首选,我们需要先定义接口返回的json......
  • 类模板
    类模板语法类模板作用:建立一个通用类,类中的成员数据类型可以不具体指定,用一个虚拟的类型来代表语法:template<typenameT>类解释:template---声明创建模板typename---表面其后面的符号是一种数据类型,可以用class代替T---通用的数据类型,名称可以替换,通常为大写字母示例:#i......