本文主要是介绍C++函数模板及类模板 ← 面向对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【知识点】
泛型编程,是 C++ 的一种重要编程思想,其利用的主要技术是模板。
C++ 提供两种模板机制:函数模板(function template)和类模板(class template)。
【算法代码:函数模板】
● 函数模板的使用方法与调用普通函数的方法一样。
● 调用函数模板时,会自动将模板参数 T 替换为指定的类型参数。
#include <iostream>
using namespace std;//function template
template <class T>
T imax(T x, T y) {if(x>y) return x;else return y;
}int main() {int a,b;double da,db;cout<<"Please input two integers:";cin>>a>>b;cout<<"Please input two decimals:";cin>>da>>db;cout<<"The maximum value of integers is "<<imax(a,b)<<"."<<endl;cout<<"The maximum value of decimals is "<<imax(da,db)<<"."<<endl;return 0;
}/*
in:
Please input two integers:12 6
Please input two decimals:2.7 1.2out:
The maximum value of integers is 12.
The maximum value of decimals is 2.7.
*/
【算法代码:类模板】
● C++ 类模板,是一种用于创建通用类的机制。
● 类模板的实现和普通类类似。
● 类模板实例化和函数模板实例化不同,类模板实例化需在类模板名字后跟 <实例化类型>,即必须显示实例化,不能自动类型推导。也就是说,调用类模板时,不会自动将模板参数 T 替换为指定的类型参数。
#include <bits/stdc++.h>
using namespace std;//class template,allow setting default parameters
template<class T1,class T2=int>
class Person {public:T1 iName;T2 iAge;public:Person(T1 name,T2 age) {this->iName=name;this->iAge=age;}void showPerson() {cout<<"name:"<<this->iName<<endl;cout<<"age:"<<this->iAge<<endl;}
};int main() {Person<string,int> p1("Son Goku",888);p1.showPerson();//Person p("Son Goku", 1000); //no using automatic type inferencePerson<string> p2("Cho Hakkai",666);p2.showPerson();return 0;
}/*
name:Son Goku
age:888
name:Cho Hakkai
age:666
*/
这篇关于C++函数模板及类模板 ← 面向对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!