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; }
代码解释:
首先,代码定义了一个类模板 Dog,它有两个模板参数 type1 和 type2。在主函数中,使用了具体的类型 string 和 int 实例化了 Dog 类,并创建了两个对象 wc 和 ah。
接着,分别给 wc 和 ah 的成员变量 m_name 和 m_age 赋值,并调用了 show 函数输出它们的值。此时,输出结果为:
wc 10
然后,调用了 myswap 模板函数,将 wc 和 ah 作为参数传入。myswap 函数实现了两个变量值的交换,并输出了 'swap'。此时,输出结果为:
wc 10
swap
最后,再次调用 wc 的 show 函数输出交换后的值。此时,输出结果为:
wc 10
swap
ah 20
原文地址: https://www.cveoy.top/t/topic/qtzR 著作权归作者所有。请勿转载和采集!