1. 程式人生 > 其它 >c++ 過載<<和>>的方式

c++ 過載<<和>>的方式

背景

我們很多時候看到類似以下程式碼

int main(int argc, char **argv)
{
	int value = 10;
	cout << value << endl;

	return 0;
}

輸出:

但如果我們自定義的類,是否也能這樣的輸出呢,看以下程式碼


很顯然,這已經報錯了

解決方法

這時候就要引進我們c++的過載機制了

#include <iostream>
using namespace std;

class MyClass
{
public:
	MyClass() {}
	~MyClass() {}

	friend ostream& operator<<(ostream& out, MyClass& a);   //新增這句

private:
	int _value = 10;
};

//函式實現
ostream& operator<<(ostream& out, MyClass& a)
{
	out << a._value;
	return out;
}

int main(int argc, char **argv)
{
	MyClass a;
	cout << a << endl;
	return 0;
}

輸出結果

可以看到已經輸出正確結果了

那既然有了輸出 << ,又想有輸入>>怎麼辦?很簡單,繼續過載>>即可

完整程式碼

#include <iostream>
using namespace std;

class MyClass
{
public:
	MyClass() {}
	~MyClass() {}

	friend ostream& operator<<(ostream& out, MyClass& a);
	friend istream& operator>>(istream& in,  MyClass& a);

private:
	int _value = 10;
};

ostream& operator<<(ostream& out, MyClass& a)
{
	out << a._value;
	return out;
}

istream& operator>>(istream& in, MyClass& a)
{
	in >> a._value;
	return in;
}

int main(int argc, char **argv)
{
	MyClass a;

	cout << "輸入:";
	cin >> a;
	cout << endl << "輸出:" << a << endl;

	return 0;
}

輸出

結束

使用關鍵字operator,記得需要用友元函式方式去過載,不使用成員函式去過載!