本文共 1699 字,大约阅读时间需要 5 分钟。
全局函数、类成员函数方法实现运算符重载步骤
1)要承认操作符重载是一个函数,写出函数名称operator+ ()
2)根据操作数,写出函数参数
3)根据业务,完善函数返回值(看函数是返回引用 还是指针 元素),及实现函数业务
友元函数实现操作符重载的应用场景
1)友元函数和成员函数选择方法
2)用友元函数 重载 << >>操作符
a)用全局函数方法实现 << 操作符
ostream& operator<<(ostream &out, Complex &c1)
{
//out<<"12345,生活真是苦"<<endl;
out<<c1.a<<" + "<<c1.b<<"i "<<endl;
return out;
}
//调用方法
cout<<c1;
//链式编程支持
cout<<c1<<"abcc";
//cout.operator<<(c1).operator<<("abcd");
//函数返回值充当左值 需要返回一个引用
b)类成员函数方法无法实现 << 操作符重载
//因拿到cout这个类的源码
//cout.operator<<(c1);
b)其他
= () [] ->
代码如下:
#includeusing namespace std;class Complex{private: int a; int b; friend ostream& operator<<(ostream &out, ostream &c1);public: Complex(int a = 0, int b = 0) { this->a = a; this->b = b; } void printCom() { cout << a << " + " << b << "i" << endl; }public: //实现 + 运算符重载 Complex operator+(Complex& c2) { Complex tmp(this->a+c2.a,this->b+c2.b); return tmp; } //前置++ Complex& operator++() { a++; b++; return *this; } //后置++ Complex operator++(int) { // 先使用 在让c1加加 Complex tmp = *this; //return c1; this->a++; this->b++; return tmp; } //成员函数法 实现 -运算符重载 Complex operator-(Complex& c2) { Complex tmp(this->a - c2.a, this->b - c2.b); return tmp; } //前置-- Complex& operator--() { this->a--; this->b--; return *this; } //后置-- Complex operator--(int) { Complex tmp = *this; this->a--; this->b--; return tmp; }};
转载地址:http://rezmi.baihongyu.com/