小括号重载

来源:互联网 发布:qq飞车s车麦凯伦数据 编辑:程序博客网 时间:2024/05/17 07:05
#include <iostream>using namespace std;class Time{public:    int h;    int m;    int s;    Time( int h = 0, int m = 0, int s = 0 )    {        operator()(h,m,s);    }    //小括号重载 版本0 注意和下面用户自定义转换区别    int operator()()    {        return h*3600 + m*60 + s;    }    //用户自定义转换    operator int()    {        return h*3600 + m*60 + s;    }    //小括号重载 版本1    void operator()(int h)    {        operator()(h,0,0);    }    //小括号重载 版本2    void operator()(int h, int m)    {        operator()(h,m,0);    }    //小括号重载 版本3    void operator()(int h, int m, int s)    {        this->h = h;        this->m = m;        this->s = s;    }    friend ostream & operator << ( ostream & os, const Time & t )    {        os << t.h << "::";        if ( t.m < 10 )        {            os << '0';        }        os << t.m << "::";        if ( t.s < 10 )        {            os << '0';        }        os << t.s;        return os;    }};int main(){    /*    ** 注意:t(1),t(1,1),t(1,1,1)的用法    ** 像不像“函数调用”    ** 这样的用法称之为仿函数    ** 仿函数在STL里用得特别多    */    Time t;    cout << t << endl;    t(1);                    //小括号重载 版本1    cout << t << endl;    t(1,1);                  //小括号重载 版本2    cout << t << endl;    t(1,1,1);                //小括号重载 版本3    cout << t << endl;    cout << t() << endl;     //小括号重载 版本0    cout << int(t) << endl;  //用户自定义转换    return 0;}
复制代码

1.小括号重载用得最多的地方,自然还是“仿函数”,这个有空可以专门写一章

2.在使用用户自定义转换,可以想一下:将double型转换为int型的过程。

 

参考资料:

    1.http://blog.sina.com.cn/s/blog_5d2a81780100r9q0.html