c++ 模板
2022/7/11 1:22:39
本文主要是介绍c++ 模板,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 函数模板
语法: (其中typename可以使用class代替)
template <typename 类型名称1, typename 类型名称2[, ...]> 返回值类型 函数名(形式参数){ //TODO, 可以使用类型参数 }
举例
#include <iostream> template <typename T> void Swap0(T *x, T *y){ //使用指针为参数 T tmp; tmp = *x; // *x表示对指针解引用 *x = *y; *y = tmp; } template <typename T> void Swap1(T &x, T &y){ //使用引用为参数 T tmp; tmp = x; //x是对参数的引用 x = y; y = tmp; } int main(){ int a0=5, b0=6; Swap0(&a0, &b0); // 传地址(指针)给函数 std::cout << "a0=" << a0 << ", b0=" << b0 << std::endl; float a1=5.1, b1=6.1; Swap1(a1, b1); //传实际的变量给函数 std::cout << "a1=" << a1 << ", b1=" << b1 << std::endl; }
2 类模板
语法:
template <typename 类型名称1, typename 类型名称2[, ...]> class 类名{ //TODO; };
举例
#include <iostream> template <typename T0, typename T1> //定义类模板 class Point{ public: Point(T0 x, T1 y); T0 getx() const; T1 gety() const; void setx(T0 x); void sety(T1 y); void show() const; private: T0 m_x; T1 m_y; }; //类实现时, 需要带上模板头, 类名后面也要带上类型参数; template <typename T0, typename T1> Point<T0, T1>::Point(T0 x, T1 y): m_x(x), m_y(y){} template <typename T0, typename T1> T0 Point<T0, T1>::getx() const {return m_x;} template <typename T0, typename T1> T1 Point<T0, T1>::gety() const {return m_y;} template <typename T0, typename T1> void Point<T0, T1>::setx(T0 x){ m_x=x; } template <typename T0, typename T1> void Point<T0, T1>::sety(T1 y){ m_y=y; } template <typename T0, typename T1> void Point<T0, T1>::show() const { std::cout << "(" << m_x << ", " << m_y << ")" << std::endl; } int main(){ Point<int, int> p0(1, 2); //创建对象时, 需要指明参数的具体类型; p0.show(); }
这篇关于c++ 模板的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升
- 2024-05-08代码报错不用愁,CodeGeeX一键完成代码修复、错误解释的功能上线了!