C++友元与输出运算符重载
生活随笔
收集整理的這篇文章主要介紹了
C++友元与输出运算符重载
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#pragma once
#include <ostream>
#include <iostream>
using namespace std;class MyComplex {
public:int GetA() const{return a;}int GetB() const {return b;}//輸出重載一friend ostream& operator < (ostream& out, const MyComplex& com);//注意ostream前不能加const,因為流要插入修改//輸出重載二ostream& operator > (ostream& out) {out << "operator>" << a << ", " << b;return out;}static void TestFriend();private:int a=0, b=10;
};//友元函數,是全局函數
ostream& operator < (ostream& out, const MyComplex& com) {out << "operator<" << com.a << ", " << com.b;return out;
}//輸出重載三,全局函數
ostream& operator << (ostream& out, const MyComplex& com) {out << "operator<<" << com.GetA() << ", " << com.GetB();return out;
}//測試用例
void MyComplex:: TestFriend() {MyComplex complex;//下面2種調用等價operator <<(std::cout, complex) << endl;std::cout << complex << std::endl;//下面2種調用等價(std::cout < complex) << endl; //加括號因為<<優先級高于<(operator <(std::cout, complex)) << endl; //友元函數是全局函數//下面2種調用等價(complex > std::cout) << endl;(complex.operator>(std::cout)) << endl;/*輸出結果:* operator<<0, 10operator<<0, 10operator<0, 10operator<0, 10operator>0, 10operator>0, 10*/}
總結
以上是生活随笔為你收集整理的C++友元与输出运算符重载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UE4材质:纯数学算法实现水面水波扩散效
- 下一篇: C++ 类模板中友元函数问题