一、模板定义: 模板是实现代码重用机制的一种工具,可以实现类型的参数化,即将类型作为参数,从而实现代码重用。模板分为函数模板和类模板两种。
二、函数模板
一般格式如下:
Template
返回类型 函数名(形参表)
{
//函数定义体
}
//其中:Template为模板声明的关键字,用class或typename修饰类型参数,模板参数可以是一个,也可以是多个。
实例如下:
template //T为传入的类型
T demo(T a,T b){
return a + b;
}
int main(){ int a = 1;
int b = 2;
//也可传入其他任意基础类型或类类型等,此时实现了代码的重用,即可做int型的a加b,亦可作double型的。
printf("%d\n",demo(a,b));
return 0;
}
【c\c++基础|c++模板学习笔记】##三、 类模板 ##
一般格式如下:
Template
class 类名
{
//类定义...
};
//其中:Template为模板声明的关键字,用class或typename修饰类型参数。
类外函数的实现如下:
1、构造函数
Template
类名::类名(参数){ //函数实现
};
2、一般函数
Template
返回值 类名::类名(参数){
//函数实现
};
**其中:Template 与 类名尖括号类的参数个数相同,类名中无需关键字class or typename**
实例如下:
无参构造:template
class myClass{public:
T a;
T b;
myClass();
T add(T a,T b);
};
template
myClass::myClass(){};
template
T myClass::add(T a,T b){
return a + b;
}
int main(){ myClass demo;
printf("%d\n",demo.add(a,b));
return 0 ;
}有参构造:
template
class myClass{
public:
T a;
T b;
myClass(T a,T b);
T add(T a,T b);
};
template
myClass::myClass(T a,T b):a(a),b(b){};
template
T myClass::add(T a,T b){
return a + b;
}
int main(){ myClass demo(a,b);
printf("%d\n",demo.add(a,b));
return 0 ;
}
可以将c++模板和java泛型联系起来,便于理解。本文如有不对之处,请各位读者提供修正意见
推荐阅读
- Java学习|JDBC入门一 驱动下载和第一个简单的jdbc程序
- MySQL基础|Mysql运算符
- 学习|谈谈MMOG的项目测试期相关技术
- 数据库|数据库(基础SQL)
- mysql|MYSQL数据库主从同步设置
- mysql|【MYSQL数据库】事件(定时器)和触发器
- java|【JAVA通天路】JDBC连接MYSQL数据库
- mysql|MYSQL数据库中表的进阶玩法——表分区
- mysql|MYSQL数据库复杂查询练习题(难度适中)