• 测试技术
  • 博客
  • 视频
  • 开源
  • 论坛
  • 沙龙
  • 下载
  • 杂志
  • 招聘

字号: | 推荐给好友 上一篇 | 下一篇

C++的未来之路:C++0x概览

发布: 2008-4-28 09:59 | 作者: 不详 | 来源: 无 | 查看: 56次 | 进入领测软件测试网论坛讨论

领测软件测试网 软件测试技术门户J[Vb E1i_ u

B@Lp`]6x:i^ 在C++98中,除了最后一行代码外其余每一行都是不合法的,而且在C++98中我们不得不编写更多(易犯错误)的代码来完成工作。我希望无需我的解释你就可以猜测到这段代码的含义,不过我们还是逐行看一看。软件测试技术门户Ww Q-fx(G3hO

template<class T> using Vec = vector<T,My_alloc<T>>;
^\zv Y  在这里,我们定义Vec<T>作为vector<T,My_alloc<T>>的别名。换句话说,我们定义一个名为Vec的标准vector,其工作方式正如我们常用的vector那样,除了它使用我自己定义的配置器(My_alloc)而不是默认的配置器之外。C++中缺乏定义这种别名以及绑定(bind)部分而非全部模板参数的能力。按照传统,这被称为“template typedefs”,因为我们一般采用typedef来定义别名,但出于技术上的原因,我们偏向于使用using。这种语法的优势之一是,它将被定义的名字展示于易被人们发现的显著位置。还要注意另一个细节,我没有像下面这样写: 软件测试技术门户7M)aJOMch

d1A6xSg dHtemplate<class T> using Vec = vector< T,My_alloc<T> >;

8wV6Ov+N)f0w 我们将不再需要在表示结束符的两个“>”之间添加空格。原则上这两个扩展已经被接受了。

K.p;M9P%A C'uT 软件测试技术门户b`YO-|W