码迷,mamicode.com
首页 > 其他好文 > 详细

重载操作符

时间:2014-08-18 12:02:54      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   div   amp   log   c++   

C++语法规定可以重载操作符,例如*和->。下面是一个例子:

class Screen{
public:
    Screen(int x, int y)
    {
        m_x = x;
        m_y = y;
    }
    int m_x;
    int m_y;
};

template<class TYPE>
class ThreadLocal{
public:
    ThreadLocal(TYPE &s)
    {
        ptr = &s;
    }

    TYPE& operator*() {    return *ptr; }
    TYPE* operator->() { return ptr; }

private:
    TYPE *ptr;
};

int main(int argc, char* argv[])
{
    Screen s1(100, 60);
    ThreadLocal<Screen> ps(s1);
    printf("%d, %d\n%d, %d\n", (*ps).m_x, (*ps).m_y, ps->m_x, ps->m_y);

    return 0;
}

重载操作符很容易与转换函数混淆,例如下面的例子:

class Screen{
public:
    Screen(int x, int y)
    {
        m_x = x;
        m_y = y;
    }
    int m_x;
    int m_y;
};

template<class TYPE>
class ThreadLocal{
public:
    ThreadLocal(TYPE &s)
    {
        ptr = &s;
    }

    operator TYPE*() { return ptr; }
    TYPE* operator->() { return ptr; }

private:
    TYPE *ptr;
};

int main(int argc, char* argv[])
{
    Screen s1(100, 60);
    ThreadLocal<Screen> ps(s1);
    printf("%d, %d\n%d, %d\n", (*ps).m_x, (*ps).m_y, ps->m_x, ps->m_y);

    return 0;
}

 

重载操作符,布布扣,bubuko.com

重载操作符

标签:style   blog   color   ar   div   amp   log   c++   

原文地址:http://www.cnblogs.com/licb/p/operator.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!