LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 582|回复: 3

pair实现里的类型后面的括号是怎么回事?

[复制链接]
发表于 2005-7-11 08:41:47 | 显示全部楼层 |阅读模式
这是STL里的pair实现,default构造函数里T1、T2后面都有一个括号,以前从来没有见过这种用法

  1. namespace std {
  2. template <class T1, class T2>
  3. struct pair {
  4. // type names for the values
  5. typedef T1 first_type;
  6. typedef T2 second_type;
  7. // member
  8. T1 first;
  9. T2 second;
  10. /* default constructor
  11. *-T1() and T2() force initialization for built-in types
  12. */
  13. pair()
  14. : first(T1()), second(T2()) {
  15. }
  16. // constructor for two values
  17. pair(const T1& a, const T2& b)
  18. : first(a), second(b) {
  19. }
  20. // copy constructor with implicit conversions
  21. template<class U, class V>
  22. pair(const pair<U,V>& p)
  23. : first(p.first), second(p.second) {
  24. }
  25. };
复制代码


上周发这个帖子的时候,因为sir的数据库问题,帖子丢了,所以也许某位大虾已经回答过了,只是偶每有看到,不好意思啊。
发表于 2005-7-11 11:40:48 | 显示全部楼层
是这里吗?
pair()
: first(T1()), second(T2()) {
}

用 T1() 初始化 first , 相当于 first = T1(); 变成为 T1 类的构造函数调用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-12 15:03:30 | 显示全部楼层
初始化明白,但里面的括号不明白,假如T1、T2为int,那不就成了int(),有什么样的情况需要用到这个括号?
回复 支持 反对

使用道具 举报

发表于 2005-7-12 15:18:41 | 显示全部楼层
Post by graydream
初始化明白,但里面的括号不明白,假如T1、T2为int,那不就成了int(),有什么样的情况需要用到这个括号?

int() 没什么不行啊,int 的构造函数而已,好像初始化为 0 吧,记不大清楚了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表