C++ 模板类与函数

模板类可以用于函数的参数和返回值,有三种形式:

1)普通函数,参数和返回值是模板类的实例化版本。

2)函数模板,参数和返回值是某种的模板类。

3)函数模板,参数和返回值是任意类型(支持普通类和模板类和其它类型)。

示例:

#include <iostream>         // 包含头文件。
using namespace std;        // 指定缺省的命名空间。

template<class T1, class T2>
class AA    // 模板类AA。
{
public:
    T1 m_x;
    T2 m_y;
    AA(const T1 x, const T2 y) : m_x(x), m_y(y) { }
    void show() const { cout << "show()  x = " << m_x << ", y = " << m_y << endl; }
};

// 采用普通函数,参数和返回值是模板类AA的实例化版本。
AA<int, string> func(AA<int, string>& aa)
{
    aa.show();
    cout << "调用了func(AA<int, string> &aa)函数。\n";
    return aa;
}

// 函数模板,参数和返回值是的模板类AA。
template <typename T1,typename T2>
AA<T1, T2> func(AA<T1, T2>& aa)
{
    aa.show();
    cout << "调用了func(AA<T1, T2> &aa)函数。\n";
    return aa;
}

// 函数模板,参数和返回值是任意类型。
template <typename T>
T func(T &aa)
{
    aa.show();
    cout << "调用了func(AA<T> &aa)函数。\n";
    return aa;
}

int main()
{
    AA<int, string> aa(3, "我是一只傻傻鸟。");
    func(aa);
}

推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/3Zqhgt

相关推荐
hycccccch2 分钟前
Java&MySQL 学习(基础)
java·开发语言·笔记·学习·mysql
芋芋qwq8 分钟前
Lua、AB包热更新总结
开发语言·lua
C or Cpp24 分钟前
C++协程
java·数据结构·c++
程序喵阿呆25 分钟前
leetcode 162 寻找峰值
数据结构·c++·算法·leetcode
爱分享的码瑞哥26 分钟前
Rust 基础教程
开发语言·后端·rust
那个那个鱼30 分钟前
C#面:现有一个整数number,请写一个方法判断这个整数是否是2的N次方
开发语言·算法·c#·.net
盏茶作酒34 分钟前
解决expand-change第一次展开无数据显示与实现
开发语言·前端·javascript
V言微语36 分钟前
2.3 主程序和外部IO交互 (文件映射方式)----IO Server实现
开发语言
yaoxin52112337 分钟前
第四十五章 在 SOAP 消息中使用数据集 - 以 XML 形式查看数据集和架构
xml·java·开发语言
临界点oc44 分钟前
Java面试八股文
java·开发语言·面试