C++学习笔记3--一些应用

本文详细介绍了C++的模板使用,包括函数模板、类模板、重载模板、默认模板参数、有界数组模板以及STL标准模板库。还探讨了RTTI运行时类型识别和异常处理,展示了dynamic_cast、const_cast、static_cast和reinterpret_cast等类型转换,并通过实例讲解了异常捕获和异常匹配。
摘要由CSDN通过智能技术生成
【模板】
函数模板定义的一般形式:
template <类型形式参数表>
返回类型 函数名(形式参数表)
{
    ...     //函数体
}

范例:
定义一个求和的函数模板
template <class type>
type Sum(type xvar, type yvar) {
    return xvar + yvar;
}

在定义完函数模板后,需要在程序中调用函数模板。下面的代码演示了Sum函数模板的调用。
int iRet = Sum(10, 20);
int dRet = Sum(1.2, 3.45);
消除模板调用产生歧义的方法-->在调用函数模板时显示标识模板类型。如:
int iRet = Sum(10.5, 20);
double dret = Sum<double>(10, 20.5);
用函数模板生成实际可执行的函数又称为模板函数。
例:使用数组作为模板参数
#include <iostream>
using namespace std;
template <class type,int len>   //定义一个模板类型
type Max(type array[len]) {     //定义函数模板
    type ret = array[0];
    for(int i=1;i<len;i++) {
        ret = ret > array[i] ? ret : array[i];
    }
    return ret;
}
int main(int argc,char* argv[]) {
    int array[5] = {1,2,3,4,5}; //定义一个整型数组
    int iret = Max<int,5>(array);   //调用函数模板Max
    double dset[3] = {1.2, 3.45, 6.789}; //定义实数数组
    double dret = Max<double,3>(dset);  //调用函数模板Max
    cout << dret << endl;
    return 0;
}


重载函数模板举例:
#include <iostream>
#include <cstring>
using namespace std;
template<class type>
type Min(type a, type b) { //定义函数模板
    return a < b ? a : b;
}
char* Min(char* a, char* b) { //重载函数模板
    if(strcmp(a, b) < 0) return a;
    return b;
}
int main(int argc, char* argv[]) {
    cout << Min(10, 3) <<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值