首页 > 代码库 > C++操作符重载(Boolan)

C++操作符重载(Boolan)

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=http://www.mamicode.com/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)