#include #include

using namespace std;

template void myswap(type &var_a, type &var_b) // 这是一个模板函数 myswap,用于交换两个变量的值。它使用了模板参数 type,可以接受任意类型的变量作为参数,并通过引用进行交换。 { type tmp = var_a; var_a = var_b; var_b = tmp; cout << 'swap' << endl; }

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; }

代码解释:

首先,代码定义了一个类模板 Dog,它有两个模板参数 type1type2。在主函数中,使用了具体的类型 stringint 实例化了 Dog 类,并创建了两个对象 wcah

接着,分别给 wcah 的成员变量 m_namem_age 赋值,并调用了 show 函数输出它们的值。此时,输出结果为:

wc 10

然后,调用了 myswap 模板函数,将 wcah 作为参数传入。myswap 函数实现了两个变量值的交换,并输出了 'swap'。此时,输出结果为:

wc 10
swap

最后,再次调用 wcshow 函数输出交换后的值。此时,输出结果为:

wc 10
swap
ah 20
C++ 模板编程:交换对象和自定义类模板

原文地址: https://www.cveoy.top/t/topic/qtzR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录