C++11模板别名
类型取别名,可以用typedef关键字,一般将类型名比较长的,再取个别名,在使用时会更方便。写几个用typedef关键字取的别名:
类型取别名,可以用typedef关键字,一般将类型名比较长的,再取个别名,在使用时会更方便。写几个用typedef关键字取的别名:
· 作为一位爱猫的宠物迷,你想设计一个类来表示猫。这也将需要多个不同的类,因为每个品种的猫都会有点不同。和所有对象一样,猫可以被创建和销毁,但,正如所有猫迷所知道的,猫所做的其它事不外乎吃和睡。然而,每一种猫吃和睡都有各自惹人喜爱的方式。
不是这样。generics 其实是为抽象类而设的语法;亦即,利用 generics(无论是 Java generics 或 C# generics),你从此不再需要定义精确的接口,但相对地,你也要为此付出诸如虚函数调用以及/或者动态类型转换的花销。
许多传统语言对程序的规模和复杂性有自身的限制。例如,BASIC对于某些类型的问题能很快解决,但是如果这个程序有几页纸长,或者超出该语言的正常解题范围,那么它可能永远 算不出结果。C语言同样有这样的限制,例如当程序超过 50 000行时,名字冲突就开始成为问 题。简言之,程序员用光了函数和变量名。另一个特别糟糕的问题是如果 C语言中存在一些小 漏洞—错误藏在大程序中,要找出它们是极其困难的。 没有清楚的文字告诉程序员,什么时候他的语言会失效,即便有,他也会忽视它们。他不 说“我的 BASIC程序太大,我必须用 C重写”,而是试图硬塞进另外几行,增加额外的性能。 所以额外的花费就悄悄增加了。
模板是C++的一个特性,是函数和类可以作用于不同的类型上而不需要针对每一个具体类型重复相同的代码。与模板相反,我们已经学过的重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。
C++语言有模板函数特性,可以更方便的编写程式,而不用考虑类型。先来了解下模板函数定义。