1. 程式人生 > 其它 >左移運算子過載——C++

左移運算子過載——C++

技術標籤:C++

場景:如果一個類person中有2個屬性,想要同時輸出是不可能的,必須要一個一個的指定,然後輸出。如下

person p;

cout<<p.m_a<<p.m_b<<endl;

但是直接用cout<<p<<endl;會報錯。實現這種直接輸出就可以用左值運算子過載實現。

程式碼實現:

#include<iostream>
using namespace std;
//左移運算子過載
//左移運算子過載配合友元可實現輸出自定義資料型別
class person
{
	friend ostream& operator<<(ostream &cout, person &p);
public:
	person(int a, int b)
	{
		m_a = a;
		m_b = b;
	}

private:
	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; //(實現鏈式程式設計)
}

void test()
{
	person p(10,10);
	cout << p << endl;
}

int main()
{
	test();
	system("pause");
	return 0;
}

執行結果如下: