模板与泛型编程
--模板定义[续]
四、模板类型形参
类型形参由关键字class或 typename后接说明符构成。在模板形参表中,这两个关键字具有相同的含义,都指出后面所接的名字表示一个类型。
模板类型形参可作为类型说明符在模板中的任何地方,与内置类型说明符或类类型说明符的使用方式完全相同。具体而言,它可以用于指定返回类型或函数形参类型,以及在函数体中用于变量声明或强制类...
分类:
编程语言 时间:
2016-05-12 21:58:10
阅读次数:
229
模板与泛型编程
--类模板成员
引言:
这一节我们介绍怎样实现前面提到的Queue模板类。
标准库将queue实现为其他容器之上的适配器。为了强调在使用低级数据结构中设计的编程要点,我们将Queue实现为链表。实际上,在我们的实现中使用标准库可能是个更好的决定!!-_-。
1、Queue的实现策略
如图所示,我们实现两个类:
1)Queue...
分类:
编程语言 时间:
2016-05-12 21:58:03
阅读次数:
285
模板与泛型编程
--模板特化
引言:
我们并不总是能够写出对所有可能被实例化的类型都最合适的模板。某些情况下,通用模板定义对于某个类型可能是完全错误的,通用模板定义也许不能编译或者做错误的事情;另外一些情况下,可以利用关于类型的一些特殊知识,编写比从模板实例化来的函数更有效率的函数。
compare函数和 Queue类都是这一问题的好例子:与C风格字符串一起...
分类:
编程语言 时间:
2016-05-12 21:57:56
阅读次数:
246
模板与泛型编程
--实例化
引言:
模板是一个蓝图,它本身不是类或函数。编译器使用模板产生指定的类或函数的特定版本。产生模板的特定类型实例的过程称为实例化。
模板在使用时将进行实例化,类模板在引用实际模板类型时实例化,函数模板在调用它或用它对函数指针进行初始化或赋值时实例化。
1、类的实例化
当编写Queueqi时,编译器自动创建...
分类:
编程语言 时间:
2016-05-12 21:57:37
阅读次数:
302
Chap1:
cerr: 标准错误
clog: 输出程序的一般性信息
cout > 也返回左侧对象
endl: 结束当前行,并将与设备关联的缓冲区中的内容刷到设备中
批量注释:ctrl+K, ctrl+C; 批量取消注释:ctrl+K, ctrl+U
for: 创建控制变量->检测->执行循环体->
++i->检测->执行循环体->
…
while(c...
分类:
编程语言 时间:
2016-05-12 21:28:46
阅读次数:
204
5.6 try语句块和异常处理:
throw表达式,异常检测部分使用throw表达式来表示它遇到了无法处理的问题。我们说throw引发了异常try语句块,异常处理部分使用try语句块处理异常。try语句块以关键字try开始,并以一个或多个catch子句结束。try语句块中代码抛出的异常通常会被某个catch子句处理。因为catch子句“处理”异常,所以它们也被称作异常处理代码。一套异常类,用...
分类:
编程语言 时间:
2016-05-12 17:39:58
阅读次数:
230
用于大型程序的工具
--命名空间[续2]
五、类、命名空间和作用域
名字的可见性穿过任意嵌套作用域,直到引入名字的块的末尾。
对命名空间内部使用的名字的查找遵循常规C++查找规则:当查找名字的时候,通过外围作用域外查找。对命名空间内部使用的名字而言,外围作用域可能是一个或多个嵌套的命名空间,最终以全包围的全局命名空间结束。只考虑已经在使用点之前声明的名字,而...
分类:
编程语言 时间:
2016-05-12 16:55:17
阅读次数:
173
用于大型程序的工具
--命名空间[续3]
六、重载与命名空间
正如我们所见,每个命名空间维持自己的作用域,因此,作为两个不同命名空间的成员的函数不能互相重载。但是,给定命名空间可以包含一组重载函数成员。
1、候选函数与命名空间
命名空间对函数匹配有两个影响。一个影响是明显的:using声明或using 指示可以将函数加到候选集合。另一个...
分类:
编程语言 时间:
2016-05-12 16:53:48
阅读次数:
236
Chap5:
悬垂else:else与它最近的尚未匹配的if匹配,或者用花括号使其成为一个块。
switch(整形/字符型){case 整形/字符型: break;default: break; } case里最好也用大括号,方便定义局部变量。
break:用于终止最近的switch/循环的块,来到块结束的下一句。
continue:终止最近的switch/循环的块,并开...
分类:
编程语言 时间:
2016-05-12 16:35:17
阅读次数:
197
用于大型程序的工具
--异常处理
引言:
C++语言包含的一些特征在问题比较复杂,非个人所能管理时最为有用。如:异常处理、命名空间和多重继承。
相对于小的程序员团队所能开发的系统需求而言,大规模编程[往往涉及数千万行代码]对程序设计语言的要求更高。大规模应用程序往往具有下列特殊要求:
1.更严格的正常运转时间以及更健壮的错误检测和错误处理。错误处理经常...
分类:
编程语言 时间:
2016-05-12 15:36:08
阅读次数:
268