标签:使用 方式 编译 解释 名称 语句 关键字 全局 通过
C++中操作符号重载重要通过成员函数很全局函数来实现,为了实现对成员数据的访问通常将全局函数声明为友元。重载的函数名称使用operator关键字,如operator op(),op可以是常见的+、-、*、/等操作号,也可以自定义转换函数如:operator int(),定义了对象转换成int的方式。
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),可以正常通过。
标签:使用 方式 编译 解释 名称 语句 关键字 全局 通过
原文地址:http://www.cnblogs.com/docliff/p/6380305.html