当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

What are you,Anyway?[VC/C++编程]

赞助商链接



  本文“What are you,Anyway?[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

在经过艰难的谈论template metaprogramming很长时间后,返回到我们学习的开始.

在这一部份,我们来理解模板编程的更为模糊的语法问题:在编译器没有充分的信息的情形下,怎样指导编译器举行解析.在这里,我们将谈论尺度容器顶用来消除歧义的“rebind”机制.同时,我们也将对一些潜在的模板编程技术举行热烈的谈论.

乃至经验丰富的C++程序员,也常常被模板的复杂的语法所困扰.在所以模板语法中,我们首先要理解:消除编译器解析的歧义,是最基本的语法困惑.

Types of Names, Names of Types

让我们看看一个没有实现尺度容器的模板例子,这个例子很简单.

template <typename T>
class PtrList {
public:
//...
typedef T *ElemT;
void insert( ElemT );
private:
//...
};

常常模板类嵌入Type names信息,这样,我们便可以通过精确的nested name 得到实例化的模板信息.

typedef PtrList<State> StateList;
//...
StateList::ElemT currentState = 0;

嵌入范例的ElenT答应我们可以,很简单的拜候PtrList模板的所承认的元素范例.

即便我们用State范例初始化PtrList,元素范例还将是State*.在其他一些情形下,PtrList 可以用指针元素实现.一个对比成熟的PtrList的实现,应当是可以随着初始化的元素范例而改变的.利用nested type,可以帮忙我们封装PtrList,免得用户理解内部的实现.

下面还有一个例子:

template <typename Etype>
class SCollection {
public:
//...
typedef Etype ElemT;
void insert( const Etype & );
private:
//...
};

SCollection的实现跟PtrList一样,服从尺度命名的条款.服从这些条款是有效的,这样我们便可以写出很多文雅的算法来利用这些容器(译注:像尺度模板库一样).比方:可以写一个以下的算法:用得当的元素范例来填充这个容器数组.

template <class Cont>
void fill( Cont &c, Cont::ElemT a[], int len ) { // error!
for( int i = 0; i < len; ++i )
c.insert( a[i] );
}


  以上是“What are you,Anyway?[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>Whats new in Microsoft SQL Server 2000(二)</b>
  • Whats new is Microsoft SQL Server 2000(五)
  • Whats new in Microsoft SQL Server 2000(六)
  • Whats new in Microsoft SQL Server 2000(三)
  • Whats new in Microsoft SQL Server 2000(四)
  • <b>Whats new in Microsoft SQL Server 2000(一)</b>
  • Whats new in Microsoft SQL Server 2000(七)
  • Whats new in Microsoft SQL Server 2000(八)
  • What are you,Anyway?
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .