2016年8月3日
摘要: 1. 与其他任何类相同,我们既可以在类模板内部,也可以在类模板外部为其定义成员函数,且定义在类模板内的成员函数被隐式声明为内联函数。 2. 默认情况下,对于一个实例化了的类模板,其成员只有在使用时才被实例化。也就是说,如果一个成员函数没有被使用,则它不会被实例化。成员函数只有在用到的时候才进行实例化 阅读全文
posted @ 2016-08-03 20:49 HorseShoe2016 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 1. 如图所示代码,模板函数 compare(const T&, const T&) 要求两个参数类型要一样。 compare("bye","dad") 调用,将模板参数推断为 const char[4] (因为还有一个 NULL 字符串结尾),而且两个参数都为 const char[4],所以可以 阅读全文
posted @ 2016-08-03 19:18 HorseShoe2016 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: 与任何其他类相同,类模板可以声明 static 成员: 在这段代码中,Foo是一个模板类,它有一个名为 count 的 public static 成员函数和一个名为 ctr 的 private static 数据成员。每个 Foo 的实例都有自己的 static 成员实例。即,对任意给定类型X,都 阅读全文
posted @ 2016-08-03 13:40 HorseShoe2016 阅读(4104) 评论(0) 推荐(0) 编辑
摘要: 当一个类包含一个友元声明时,类与友元各自是否是模板是相互无关的。如果一个类模板包含一个非模板友元,则友元被授权可以访问所有模板实例。如果友元自身是模板,类可以授权给所有友元模板实例,也可以只授权给特定实例。 1. 一对一友好关系 类模板与另一个(类或函数)模板间友好关系的最常见形式是建立对应实例及其 阅读全文
posted @ 2016-08-03 12:28 HorseShoe2016 阅读(1416) 评论(0) 推荐(1) 编辑
摘要: 在VS2015中定义了这样一个类: 对于重载的 < 运算符,显示如下错误: 网上查找原因,解释如下: 重新如下定义就对了: 如果必须要在类内定义的话,只能定义为单参数的运算符函数: 此时,如果在源文件中定义了如下的模板函数: 则该模板函数只接受类外定义的双目运算符: 而类内定义的单参数运算符 会被报 阅读全文
posted @ 2016-08-03 10:37 HorseShoe2016 阅读(15025) 评论(2) 推荐(2) 编辑