首页 > 代码库 > 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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。