3.模板类简单实例

模板类简单实例

先看代码

1.主程序(.cpp)

#include "Params.h"

#include <iostream>

using namespace std;

int main()

{

    int a = 666;

    std::string str = "123123";

    Params<int, std::string> pms;

    pms.Hello(a, str);

    return 0;

}

  1. 模板类

Params.h

#pragma once

#include <iostream>

template<typename T1, typename T2>

class Params

{

public:

void Hello(T1 a, T2 b);

};

Params.cpp

#include "Params.h"

#include <iostream>

template<typename T1, typename T2>

void Params<T1, T2>::Hello(T1 a, T2 b)

{

std::cout << a << "   " << b << std::endl;

}

重点总结

1.模板类中的.h、.cpp两个文件不能像普通的类一样分成两个文件,需要将.cpp中的内容放到.h中实现,具体原因可百度查看,这里摘取一段:通俗地说,用户写一个模板定义,模板本身提供任何数据类型的支持,而编译器在编译出的目标文件中只支持确定的类型例如func(int,int),func(string char),而不能支持func(模板类,模板类...)(注意模板是C++的特性而非编译器的特性)。那么编译器在编译的时候根本不知道用户要传入什么样的参数,所以无法确定模板的实例,所以编译器只能等到用户使用此模板的时候才能进行实例化,才能确定模板的具体类型,从而为其分配内存空间,像上述例子中,模板没有实例化,编译器也就不会为模板分配内存空间。

2.主程序引用模板类,实例化时不能像普通类一样写

Params pms;

需要指定模板类中使用的两个虚拟类的具体类型

Params<int, std::string> pms;

3.实现模板类中函数时,需要在函数前面添加模板声明

template<typename T1, typename T2>

改善

最后模板类只需要一个.h文件

#pragma once

#include <iostream>

template<typename T1, typename T2>

class Params

{

public:

void Hello(T1 a, T2 b);

};

template<typename T1, typename T2>//必加

void Params<T1,T2>::Hello(T1 a, T2 b)

{

std::cout << a << "   " << b << std::endl;

}

执行结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值