- 加号 + :
Person operator+(Person p);
#include <iostream> using namespace std; class Person { public: Person(int a, int b): m_A(a), m_B(b) { } int m_A; int m_B; Person operator+(Person p) // 通过成员函数重载 + { Person temp(0, 0); temp.m_A = this->m_A + p.m_A; temp.m_B = this->m_B + p.m_B; return temp; }; }; int main() { Person p1(10, 20); Person p2(10, 20); Person p3 = p1 + p2; // p3.m_A: 20, p3.m_B: 40 cout << p3.m_A << "****" << p3.m_B << endl; }
- 左移运算符 << :
ostream & operator<<(ostream &cout, Person p);
#include <iostream> using namespace std; class Person { friend ostream &operator<<(ostream &cout, Person p); // 如果涉及 private 成员 public: Person(int a, int b): m_A(a), m_B(b) { } int m_A; int m_B; }; ostream & operator<<(ostream &cout, Person p) // 无法利用成员函数实现 { cout << " m_A = " << p.m_A << " m_B = " << p.m_B << endl; return cout; } int main() { Person p(10, 20); cout << p << endl; // m_A = 10 m_B = 20 }
- 递增运算符 ++ :
Person & operator++()
,Person operator++(int)
#include <iostream> using namespace std; class Person { friend ostream &operator<<(ostream &cout, Person p); // 如果涉及 private 成员 public: Person(int a, int b): m_A(a), m_B(b) { } Person & operator++() // 前置递增,返回引用 { this->m_A++; return *this; } Person operator++(int) // 后置递增,返回值,参数 int 占位 { Person temp = *this; this->m_A++; return temp; } int m_A; int m_B; }; ostream & operator<<(ostream &cout, Person p) { cout << " m_A = " << p.m_A << " m_B = " << p.m_B << endl; return cout; } int main() { Person p(10, 20); cout << p << endl; // m_A = 10 m_B = 20 cout << ++p << endl; // m_A = 11 m_B = 20 cout << p++ << endl; // m_A = 11 m_B = 20 }
- 函数调用运算符():
自选返回类型 operator()(自选形参);
#include <iostream> using namespace std; class Person { friend ostream &operator<<(ostream &cout, Person p); // 如果涉及 private 成员 public: Person(int a, int b): m_A(a), m_B(b) { } void operator()() // 函数调用运算符 -> 仿函数 { cout << "here" << endl; } int m_A; int m_B; }; int main() { Person p(10, 20); p(); }
- 其他不赘述,仅给出 函数名称和参数返回类型
- 赋值运算符=:
Person& operator=(Person p);
- 关系运算符==:
bool operator==(Person p);
- 赋值运算符=:
C++类和对象-C++运算符重载->加号运算符重载、左移运算符重载、递增运算符重载、赋值运算符重载、关系运算符重载、函数调用运算符重载
2024-07-14 12:48:04 44 阅读