Member function templates CANNOT be virtual! On the contrary odinary member function templates can be virtual.Linkage of Templates1 // default2 extern...
分类:
编程语言 时间:
2015-06-26 12:24:10
阅读次数:
166
Template Class or Class TemplateClass template is a TEMPLATE used to generate classes.Template class is a classed generated from a template. Sometimes...
分类:
编程语言 时间:
2015-06-23 21:20:39
阅读次数:
115
关于源代码的组织:函数模板在实例化的时候编译器要能够看到其定义——这一点是要注意的。包含模型将模板的声明和定义都放到头文件中,不过这样带来的问题是增加了include的开销。显示实例化感觉这个东东比较鸡肋。分离模型export关键字使用export关键字之后即使模板的声明和定义在不同的编译单元中,模...
分类:
编程语言 时间:
2015-06-20 16:57:05
阅读次数:
153
Keyword Typename1 template2 class SomeClass3 {4 typename T::subtype * ptr;5 };如果没有typename,T::subtype会被认为是一个静态成员。A practical example: 1 // print e...
分类:
编程语言 时间:
2015-06-18 23:47:36
阅读次数:
172
一个例子是1 template 2 class Stack {};在这里我就想起了C语言是怎么弄数据结构的,不得不说模板是很方便的东西。上面的例子是一个类模板,函数模板其实也是类似的。浮点数和类对象是不允许作为非类型模板参数的。对上面这句话的补充:这是历史原因,C++ Templates的作者认为C...
分类:
编程语言 时间:
2015-06-18 13:21:21
阅读次数:
134
模板类 template stack {...} 的构造函数应该写作stack而不是stack,经作者这么一说我在注意到这件事情。模板的特化先说说函数模板。函数模板只能全特化,不能偏特化,并且特化的模板函数相比于等价模板函数优先,但是和非模板函数相比非模板函数优先。 1 #include 2 3 ....
分类:
编程语言 时间:
2015-06-16 22:38:35
阅读次数:
190
对程序效率的考虑template inlinevoid swap(T *a, T * b){ T tmp(*a); *a = *b; *b = tmp;}上面的代码实际上进行了三次拷贝,如果类型的尺寸比较大,显然会很浪费时间。解决方案是可以给特定的类型定义更高效的用于交换的成员函数...
分类:
编程语言 时间:
2015-06-16 22:32:05
阅读次数:
138
模板被编译两次书上说模板被编译两次:一次是实例化之前,检查模板代码本身,这个好理解,就是检查和模板没有关系的代码;第二次编译是在实例化的时候,看看把类型带入进去有没有问题,比如说字符串没有除法。还有一个需要注意的问题:模板在进行实例化的时候,编译器要能够看到模板的定义。下面的代码会挂掉,因为main...
分类:
编程语言 时间:
2015-06-15 23:26:49
阅读次数:
121
1、审慎添加新class如何被创建,被析构复制行为如何有什么默认行为是需要被禁止的和其他类之间关系如何(设计模式的领域)支持怎么样的类型转换一般性如何(模板编程)2、合理运用几种类间关联关系public继承是 is-a 关系聚合是 has-a 或者 通过a去实现private继承也是通过a实现,只有...
分类:
其他好文 时间:
2015-06-09 19:10:19
阅读次数:
108