C++Primer类模板幻灯片.pptVIP

  • 67
  • 0
  • 约 40页
  • 2016-12-05 发布于浙江
  • 举报
类模板的特化及部分特化(续) 格式:以关键字template开始,后面是尖括号中的模板 参数表。 注意:①部分特化的模板参数表只列出模板实参仍然未 知的那些参数。 ②类模板部分特化是被隐式实例化的。编译器选择“针 对该实例而言最为特化的模板定义”进行实例化,当没 有特化可被使用时,才使用通用模板定义。 例:Graphics24,90 figure; 它即能从通用类模板定义被实例化,也能从部分特化的 定义被实例化,但编译器选择的是部分特化来实例化模 板。 ③类模板部分特化必须有它自己对成员函数、静态数据成员和嵌套类的定义。 八、名字空间和类模板 类模板定义也可以被放在名字空间中。例如: Namespace cplusplus_primer{ Templateclass type Class Graphics{…}; Templateclass type Type create() {…} } 当类模板名字Graphics被用在名字空间之外时,它必须被 名字空间名cplusplus_primer限定修饰,或者通过一个using声明或指示符被引入。例如: 名字空间和类模板(续) Void main() { using cplusplus_primer::Graphics; Graphicsint *pg=new Graphicsint; //… } 注意:在名字空间中声明类模板也会影响该类模板及其成员的特化和部分特化声明的方式,类模板或类模板成员的特化声明必须被声明在定义通用模板的名字空间中(可以在名字空间之外定义模板特化)。 一个实例 书上讲到了一个关于队列的例子,下面将其代码 整理如下:(注意:书上P686类QueueItem中还要 增加如下友元声明:friend ostream operator(ostream os, const QueueType q);)。 #include iostream.h template class Type class QueueItem; template class Type class Queue { public: friend ostream operator(ostream os,const QueueType q); Queue() : front( 0 ), back ( 0 ) { } ~Queue(){} 一个实例(续) void add( const Type ); bool is_empty() const { return front == 0; } Type remove(); private: QueueItemType *front; QueueItemType *back; }; template class Type class QueueItem { public: QueueItem(Type val){item=val;next=0;} friend class QueueType; friend ostream operator(ostream os,const QueueType q); friend ostream operator(ostream os,const QueueItemType qi); 一个实例(续) private: Type item; QueueItem *next; }; template class Type void QueueType::add(const Type val) { QueueItemType *pt =new QueueItemType(val); if ( is_empty() ) front = back = pt; else { back-next = pt; back = pt; } } 一个实例(续) template class Type Type QueueType::remove() { if ( is_empty() ) { cerr remove() on empty queue \n; exit(-1); } QueueItemType *pt = front; front = front-next; Type retval = pt-item; delete pt; return retval; } 一个实例(续) template class Type ostream operator(ostream os, const QueueType q) //输出队列成员 { os ; QueueItemType *p; for ( p = q.front; p; p = p-next ) os

文档评论(0)

1亿VIP精品文档

相关文档