摘要:
顾名思义,typename有双重含意。只要你用过template,那么第一重含意一定知道,那就是声明模板的时候,我们既可以这样写:template 也可以这样写template 这两种写法并没有任何区别,都是标记T可以是符合隐式接口的任何类型,包括系统预定义类型,也包括用户自定义类型。typename的第二重含意其实不大能遇到,因为这个依赖于编译器,看下面的例子: 1 class SampleClass 2 { 3 public: 4 typedef int MyInt; 5 // static const int MyInt = 3; 6 }; 7 8 int main() 9 {... 阅读全文
摘要:
从本条款开始,就进入了全书的第七部分:模板与泛型编程。模板与泛型在C++中是非常重要的部分,还记得本书第一章时,把C++视为一个联邦,它由四个州政府组成,其中一个政府就是模板与泛型了。本条款是一个介绍性质的条款,内容不难,只需要讲清楚两个概念就行了,即什么是隐式接口,什么是编译期多态。隐式接口是相对于函数签名所代码的显式接口而言的。当我们看到一个函数签名(即函数声明),比如说:string GetNameByStudentID(int StudentID);我们就知道这个函数有一个整型的形参,返回值是string。但隐式接口是由有效表达式组成的,考虑一个模板函数,像下面这样:1 templat 阅读全文