c++远征之模板篇——函数模板、类模板
2017-06-17 22:05
253 查看
以下内容源于慕课网的学习整理,如有侵权,请告知删除。
那么能否把数据的类型当做参数传递呢?肯定是可以的,这是模板。
变量作为模板的参数:
多参数函数模板,typename和class可以混用
函数模板与重载
定义在类内时,和普通的成员函数没有任何区别。
注意,写在类外的函数,需要使用template<typename T>
函数模板(vs模板函数)
1、为什么需要模板?
函数体相同,只是类型不一样而已。那么能否把数据的类型当做参数传递呢?肯定是可以的,这是模板。
2、关键字:template,typename,class
后二者的作用是一样的变量作为模板的参数:
多参数函数模板,typename和class可以混用
函数模板与重载
类模板
1、为什么需要类模板?
原因和函数模板一样,整体相同,而数据类型(一般指数据成员的数据类型,或者成员函数的返回参数类型、函数体中的数据的类型)不同。2、使用举例
函数实体定义在类外时的写法。定义在类内时,和普通的成员函数没有任何区别。
注意,写在类外的函数,需要使用template<typename T>
3、模板代码不能分离编译
不能分别写在.h .cpp4、代码示例
#include <iostream> using namespace std; /** * 定义一个矩形类模板Rect * 成员函数:calcArea()、calePerimeter() * 数据成员:m_length、m_height */ template<typename T> class Rect { public: Rect(T length,T height); T calcArea(); T calePerimeter(); public: T m_length; T b0dd m_height; }; /** * 类属性赋值 */ template<typename T> Rect<T>::Rect(T length,T height) { m_length = length; m_height = height; } /** * 面积方法实现 */ template<typename T> T Rect<T>::calcArea() { return m_length * m_height; } /** * 周长方法实现 */ template<class T> T Rect<T>::calePerimeter() { return ( m_length + m_height) * 2; } int main(void) { Rect<int> rect(3, 6); cout << rect.calcArea() << endl; cout << rect.calePerimeter() << endl; return 0; }
相关文章推荐
- c++ 模板学习笔记:类模板和函数模板实现pair(权哥)
- c++的函数模板和类模板
- C++中函数模板和类模板
- C++ 函数模板一(函数模板定义)
- c++远征之模板篇(友元函数和友元类)
- C++ 模板学习 函数模板、类模板、迭代器模板
- c++远征之模板篇——标准模板库(STL)
- C++ 类模板作为函数模板示例
- C++的函数模板和类模板理解
- c++远征之模板篇——静态数据成员,静态成员函数
- [置顶] C++(函数模板的覆盖 包括:处理私有类的函数模板覆盖)
- C++的函数模板与类模板
- c++远征之模板篇——运算符重载
- C++库研究笔记——使用函数模板还是类模板?+ 一个类型重复问题的两种解决方法
- C++学习日记6——模板篇的函数模板和类模板
- C++ 函数模板,类模板初步认识
- c++远征之模板篇——友元函数、友元类
- 关于C++模板和重载的小问题
- 一个高效的C++性能计数器模板
- C++中的函数模板