二.C++学习笔记-模板

来源:互联网 发布:重庆旅游业数据 编辑:程序博客网 时间:2024/06/18 10:05

学过Java的看到C++的模板应该会觉得跟泛型的使用的方式非常相似,所以理解起来还是比较容易的,只不过语法有些许不同,需要花些时间去熟悉。

一.函数模板

#include "stdafx.h"#include <iostream>#include <string>using namespace std;template<typename T>void max(T a,T b) {cout << (a > b ? a : b) << endl;}void max(double a, double b) {cout << "模板特例化" << endl;}template<typename T>T max2(T a, T b) {return a > b ? a : b;}template<typename T,int count>void max3(T a,T b) {for (int i = 0; i < count; i++) {cout << (a > b ? a : b) <<" "<< count << endl;}}int main() {max<int>(1, 2);max(1.1, 2.1);cout << max2<int>(1, 2) << endl;max3<int, 2>(4, 5);return 0;}

二.类模板

#include "stdafx.h"#include<iostream>#include "ConsoleApplication2.h"using namespace std;template<typename T>class Rect{public:Rect(T length, T height);T calcArea();T calePerimeter();public:T m_length;T 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_height*m_length;}template<typename T>T Rect<T>::calePerimeter(){return 2*(m_length+m_height);}int main(){Rect<int> rect(2,3);cout << rect.calcArea() << endl;cout << rect.calcArea() << endl;    return 0;}



0 0