`
- 浏览:
1417316 次
- 性别:
- 来自:
北京
-
/**********************************************************************
* <模板>
*模板是一种参数化的类或函数,也就是类的形态或者函数的形态可以被参数改变.
***********************************************************************/
/**//**********************************************************************
* <模板函数> */
template <class T> T funname(para type)
/**//*自我理解:
* 如果要计算int型和float型数组的平均值,可以分别写int_average(int nVal,*int size)和
*float_average(int nVal,int size)两个函数,但其实它们里面的步骤是一*样的,只是数据类型
*不同,如果使用模板,就不需要这么麻烦了。
***********************************************************************/
//例1:
template <class T> average(T *array,int size)
...{
T sum = 0;
for(int i=0;i<size;i++)
sum += array[i];
T avg = sum/size;
return avg;
};
//"<class T>"告诉编译器"T"是函数使用的数据类型。
//提示:模板函数最好写在头文件中,但必须要写在main()前面
//例2:
template <class T>
T max(T x,T y) //传入的参数改必须是同类型的
...{
return (x>y) ? x:y;
}
void main()
...{
double a = 50.235;
double b = 50.234;
double c = max(a,b);
cout<<"最大值="<<c<<endl;
}
//函数模板经实例化所生成的具体函数叫"模板函数";
//例如例1,可以实例化成 average(int,int)、average(float,float)、average(char,char) 等等...
//每一个模板形参前必须有"class"关键字!
//在template语句与函数模板语句之间不允许有别的语句;
/**//**********************************************************************
* <多类型模板函数>
*
* 如上题数组,若数组中所有元素之和超过类型范围怎么办?可用多类型*函数模板解决
***********************************************************************/
//例:
template <class T1,class T2>
T1 average(T1 *array,T2,int size)//声明函数模板
...{
T2 sum = 0;
for(int i=0;i<size;i++)
sum+=array[i];
return(sum/i);
}
void main()
...{
__int16 intArray[]=...{10000,20000,30000}; // 范围 -32768 - 32767
cout<<"整数平均值="<<::average(intArray,3)<<endl;
}
/**//* 自我理解
此例中,当T1接收了__int16 intArray[]后,它俨然就成了__int16型了,但要命的是,数组中的
数字相加后,会超界,so...再定义一个T2,用T2来接收相加后的的数据,T2会根据数据的大小来
确定自己的类型。 */
/**//**********************************************************************
* <模板函数的重载>
* 因为模板函数需要接收同类型的参数,要是参数类型不一致怎么办?可以使用函数重载.
***********************************************************************/
template<class T>
T max(T x,T y) //传入的参数改必须是同类型的
...{
return (x>y) ? x:y ;
}
int max(int x ,char y) //重载函数 max,一个整型参数,一个字符型参数
...{
return (x>y) ? x:y ;
}
void main()
...{
int a = 55;
// int b = 66;
char b = 'A'; //ASCII 码 65
cout<<"最大值="<<max(a,b)<<endl; //此处将调用重载函数
}
/**//**********************************************************************
* <类模板>
***********************************************************************/
const int size = 10;
template <class T>
class stack
...{
T stck[size]; //模板定义数组的数据类型
public:
//若成员函数中使用了模板,则此函数需要在类体外定义!!!
void push(T ch); //模板定义形参类型
T pop(); //模板定义返回类型
};
template <class T> //注意:在类体外实现成员函数时的写法!!!
void stack<T>::push(T ob)
...{
}
template <class T> //注意:在类体外实现成员函数时的写法!!!
T stack<T>::pop()
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
9. 模板:C++的模板允许创建泛型函数和泛型类,实现代码复用,无需为每种数据类型重复编写相同功能的代码。 10. 标准库:C++标准库提供了大量的实用功能,如输入/输出流(iostream)、字符串(string)、算法...
C++补充-模板,针对很多东西进行了解析,相当好的东西,值得参考!希望对你有用!
c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件模板 c++文件...
使用C++模板,可以实现代码复用和泛型编程,这对于解决复杂问题尤其有帮助。ACM-ICPC模板则是在此基础上,结合比赛特点,进一步优化和封装的代码库。 总的来说,这个基于C++的ACM-ICPC模板是参赛者在备赛过程中必不...
这涵盖了C++的许多关键特性,如模板、异常处理、STL(标准模板库)、智能指针以及C++11引入的新特性,如lambda表达式、右值引用等。 当你解压缩并拷贝所有文件到`/usr/share/man/man3/`路径后,你可以通过命令行中...
9. **变长模板参数解包**:C++14允许在模板实例化中使用`...`来解包参数包,使得对可变参数模板的处理更加灵活。 10. **对`std::thread`的改进**:包括更好的错误处理,以及在某些情况下更高效的线程创建。 “MV ...
总的来说,C++-Test-7-29.rar这个压缩包可能涵盖了C++的基础知识、面向对象编程、模板与泛型、标准库的使用以及测试与调试等多个方面,是学习和巩固C++技能的良好实践。通过深入研究和实践,你可以逐步成为一名熟练...
C++模板是C++编程语言中的一个重要特性,它允许程序员创建泛型代码,实现代码复用,提升效率并保持灵活性。在"两本很好的讲解c++ template的书"中,我们可以期待深入理解模板的各个方面,包括基本概念、特性和最佳...
2. ATL(Active Template Library):它是一组C++模板,主要用于创建COM(Component Object Model)组件,简化了COM对象的创建过程。 3. CRT(C Run-Time Library):这是C++的基础运行库,包括标准库函数、内存管理...
C++程序设计与实践:模板和泛型编程 C++ 程序设计与实践中,模板和泛型编程是非常重要的概念。模板是 C++ 的泛型机制,用来实现泛型编程。泛型编程是指不依赖于任何具体类型来编写通用代码,具体类型信息的提供是在...
【标题】:“C++第8单元第18课:C++-Test-8-18.rar” 这是一份关于C++编程语言的学习资料,重点聚焦于第8单元的第18课内容。从标题来看,我们可以推测这可能是一个测试或者练习集合,用于检验或巩固学习者在C++第8...
C++模板和STL库是C++编程语言中的两个核心特性,它们极大地提高了代码的复用性和效率。本文将深入探讨这两个主题,并提供丰富的实践应用示例。 首先,我们来理解C++模板。模板是C++的一个强大工具,它允许程序员...
6. **模板**:C++的模板提供了一种泛型编程机制,允许编写可应用于多种数据类型的函数和类。 7. **异常处理**:异常处理是处理运行时错误的方法,通过try、catch和throw关键字来捕获和处理可能出现的异常情况。 8....
3. 模板:C++的模板功能允许我们编写泛型代码,可以在多种数据类型上复用,提高代码的重用性。 4. 标准库:C++标准库提供了大量预先定义的函数和容器,如iostream用于输入输出,vector和list用于动态数组和链表,...
3. **模板**:C++的模板允许开发者编写泛型代码,可以在各种数据类型上工作。这增强了代码的重用性,减少了重复的工作。 4. **异常处理**:C++提供了一种机制来处理运行时错误,即异常处理。通过try-catch块,...
"Dev-C++模板"就是为帮助新手快速入门C语言开发而设计的一套工具,它包含了必要的配置和示例代码,便于使用Visual Studio(VS)或Dev-C++这样的集成开发环境(IDE)进行学习和实践。 Dev-C++是一款开源的C/C++ IDE...
介绍的是利用模板匹配的原理来识别例如数字、汉字等。
C++模板是C++语言中的一个强大特性,它允许程序员创建泛型代码,即能够处理多种数据类型的代码。模板在C++中分为两种主要类型:函数模板和类模板。函数模板用于定义可以接受不同类型参数的函数,而类模板用于创建...