码迷,mamicode.com
首页 > 编程语言 > 详细

C++操作符重载(Boolan)

时间:2017-02-09 00:56:23      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:使用   方式   编译   解释   名称   语句   关键字   全局   通过   

C++中操作符号重载重要通过成员函数很全局函数来实现,为了实现对成员数据的访问通常将全局函数声明为友元。重载的函数名称使用operator关键字,如operator op(),op可以是常见的+、-、*、/等操作号,也可以自定义转换函数如:operator int(),定义了对象转换成int的方式。

  • 重载函数的调用方式,如a+b,a为类对象,若实现了+重载,将调用a.operator+(b),在这里+运算符作用于左边的对象,例如:
    std::string str = "Hello, ";
    str.operator+=("world");                       // 相当与str += "world";
  • 由于操作符作用于左侧对象或变量,因此使用需要注意符合左右两边的顺序,例如:
  • class Foo
    {
    public:
        Foo(int data=0): m_data(data) {}
        Foo& operator+(int a) {
            m_data += a;
            return *this;
        }
        friend std::ostream& operator<<(std::ostream& os, const Foo& f) {
            return os << f.m_data;
        }
    private:
        int m_data;
    };

    此时定义对象,语句Foo a; a + 1;正常执行,1 + a;将无法编译,因为无法找到常量1的+操作定义,定义友元函数:

  • friend Foo& operator+(int a, Foo& f) {
        return f + a;
    }

    语句1 + a;将由C++的重载解析解释为operator+(1, a),可以正常通过。

C++操作符重载(Boolan)

标签:使用   方式   编译   解释   名称   语句   关键字   全局   通过   

原文地址:http://www.cnblogs.com/docliff/p/6380305.html

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