第六十八课 C++中的一些奇怪的写法

本文介绍了C++中的一些不寻常的编程技巧,包括使用template关键字定义泛型类型,以及typename解决模板二义性问题。同时,讨论了try...catch异常处理机制在函数分割和异常声明中的应用,强调了异常声明对于提高代码可读性的重要性。通过这些知识点,读者可以更好地理解和利用C++的高级特性。
摘要由CSDN通过智能技术生成

第六十八课 C++中的一些奇怪的写法

一、template

  • template <class T>这样的定义和 template <typename T>效果是差不多的

  • 原因是:

    早期的C++直接复用class关键字来定义模板,但是泛型编程不只是类类型,如果使用 class 关键字的复用使得代码出现二义性

  • typename 诞生的原因

    自定义类类型内部的嵌套类型,不同类中的同一个标识符可能导致二义性,编译器无法辨识标识符究竟是什么

二、try

int func(int i)
try // 正常语句
{
	return i;
}
catch(...) // 异常语句
{
	return -1
}
int func(int i, int j)
throw(int) // 说明可能抛出异常,异常类型为int
{
	return i + j;
}
  • try ...catch用于分隔正常代码与异常处理代码
  • try ...catch可以直接将函数实现分割为2部分
  • 函数声明和定义时可以直接指定可能抛出的异常类型
  • 异常声明成为函数的一部分可以提高代码的可读性

函数异常声明注意事项

  • 函数异常声明是一种与编译器之间的契约

  • 函数声明异常后就只能抛出声明的异常

    抛出的其他异常将会导致程序运行终止

    可以直接通过异常声明定义无异常函数

三、小结

  • class 可以用来在模板中定义泛指类型(不推荐)
  • typename 是可以消除模板中的二义性
  • try...catch可以将函数分割为两部分
  • 异常声明能够提高程序的可读性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值