C++ 模板类和模板函数示例:交换对象和输出信息
#include
using namespace std;
template
template<typename type1, typename type2> // 这是一个类模板 Dog,它有两个模板参数 type1 和 type2。类中包含了一个成员函数 show 和两个成员变量 m_name 和 m_age,它们的类型由模板参数确定 class Dog { public: void show(); type1 m_name; type2 m_age; };
template<typename type1, typename type2> // 这是类模板 Dog 中成员函数 show 的定义,它输出成员变量 m_name 和 m_age 的值 void Dog<type1, type2>::show() { cout << m_name << ' ' << m_age << endl; }
int main() { Dog<string, int> wc; wc.m_name = 'wc'; wc.m_age = 10; wc.show(); Dog<string, int> ah; ah.m_name = 'ah'; ah.m_age = 20; myswap< Dog<string, int> >(wc, ah); wc.show(); return 0; }
// 解释每行代码内容:
// 1. #include <iostream>: 包含了输入输出流的头文件。
// 2. #include <string>: 包含了 string 类的头文件。
// 3. using namespace std;: 使用 std 命名空间,以便使用标准库中的函数和对象。
// 4. template <typename type> void myswap(type &var_a, type &var_b): 定义了一个模板函数 myswap,它接受两个参数 var_a 和 var_b,并通过引用进行交换。
// 5. type tmp = var_a; var_a = var_b; var_b = tmp;: 交换 var_a 和 var_b 的值。
// 6. cout << 'swap' << endl;: 输出 'swap'。
// 7. template<typename type1, typename type2> class Dog: 定义了一个类模板 Dog,它有两个模板参数 type1 和 type2。
// 8. void show();: 声明了成员函数 show,但没有给出定义。
// 9. type1 m_name; type2 m_age;: 声明了两个成员变量 m_name 和 m_age,它们的类型由模板参数确定。
// 10. template<typename type1, typename type2> void Dog<type1, type2>::show(): 成员函数 show 的定义,输出成员变量 m_name 和 m_age 的值。
// 11. Dog<string, int> wc;: 声明了一个 Dog 类的对象 wc,模板参数分别为 string 和 int。
// 12. wc.m_name = 'wc'; wc.m_age = 10;: 给对象 wc 的成员变量 m_name 和 m_age 赋值。
// 13. wc.show();: 调用对象 wc 的成员函数 show,输出 m_name 和 m_age 的值。
// 14. Dog<string, int> ah;: 声明了一个 Dog 类的对象 ah,模板参数分别为 string 和 int。
// 15. ah.m_name = 'ah'; ah.m_age = 20;: 给对象 ah 的成员变量 m_name 和 m_age 赋值。
// 16. myswap< Dog<string, int> >(wc, ah);: 调用 myswap 函数,交换对象 wc 和 ah 的值。模板参数为 Dog<string, int>。
// 17. wc.show();: 调用对象 wc 的成员函数 show,输出交换后的 m_name 和 m_age 的值。
// 18. return 0;: 返回 0,表示程序正常结束。
原文地址: https://www.cveoy.top/t/topic/qtBd 著作权归作者所有。请勿转载和采集!