前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 类模板实例化对象,向函数传参的方式

C++ 类模板实例化对象,向函数传参的方式

作者头像
耕耘实录
发布2022-05-09 16:15:51
1K0
发布2022-05-09 16:15:51
举报
文章被收录于专栏:耕耘实录耕耘实录

C++类模板实例化对象,向函数传参的方式一共有3种:

  • 指定传入的类型:直接显示对象的数据类型;
代码语言:javascript
复制
#include<iostream>
#include<string>
using namespace std;

template<class T1, class T2>
class Demo{
public:
    T1 s_name;
    T2 i_age;
    Demo(T1 name, T2 age);
    void show(){
        cout<<"Name: "<< s_name <<"\nAge: "<<i_age<<endl;
    }
};

template<class T1, class T2>
Demo<T1, T2>::Demo(T1 name, T2 age):s_name(name),i_age(age){}

void print_demo(Demo<string, int> &d){
    d.show();
}

void test(){
    Demo<string, int> d("孙悟空", 500000);
    print_demo(d);
}

int main(){
    test();
    return 0;
}
  • 参数模板化:将对象中的参数变为模板进行传递;
代码语言:javascript
复制
#include<iostream>
#include<string>

using namespace std;

template<class T1, class T2>
class Demo {
public:
    T1 s_name;
    T2 i_age;

    Demo(T1 name, T2 age);

    void show() {
        cout << "Name: " << s_name << "\nAge: " << i_age << endl;
    }
};

template<class T1, class T2>
Demo<T1, T2>::Demo(T1 name, T2 age):s_name(name), i_age(age) {}

template<class T1, class T2>
void print_demo(Demo<T1, T2> &d) {
    d.show();
    cout << "T1的类型: " << typeid(T1).name() << endl;
    cout << "T2的类型: " << typeid(T2).name() << endl;
}

void test() {
    Demo<string, int> d("唐僧", 5000);
    print_demo(d);
}

int main() {
    test();
    return 0;
}
  • 整个类模板化:将对象类型模板化进行传递。
代码语言:javascript
复制
#include<iostream>
#include<string>

using namespace std;

template<class T1, class T2>
class Demo {
public:
    T1 s_name;
    T2 i_age;

    Demo(T1 name, T2 age);

    void show() {
        cout << "Name: " << s_name << "\nAge: " << i_age << endl;
    }
};

template<class T1, class T2>
Demo<T1, T2>::Demo(T1 name, T2 age):s_name(name), i_age(age) {}

template<class T>
void print_demo(T &d) {
    d.show();
    cout << "T的类型: " << typeid(T).name() << endl;
}

void test() {
    Demo<string, int> d("貂蝉", 50);
    print_demo(d);
}

int main() {
    test();
    return 0;
}

以上3种参数传入方式最常用的是:指定传入的类型。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-02-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档