1. 程式人生 > >結構體沒有過載==,不能判斷相等!!沒有過載=,可以賦值

結構體沒有過載==,不能判斷相等!!沒有過載=,可以賦值

struct stStudent
{
	int num;
	wstring name;
	wstring level;
	bool isTwo;
};

自定義的結構體,沒有過載operator==,是不能進行等於判斷

沒有過載operator=,可以進行賦值操作

	stStudent a, b;
	a.isTwo = false;
	a.level = L"1";
	a.name = L"zhansan";
	a.num = 100;

	b = a; //正確

	if (a == b) //錯誤
	{
		cout << "相等" << endl;
	}

正確的程式碼如下:

struct stStudent
{
	int num;
	wstring name;
	wstring level;
	bool isTwo;

	bool operator==(const stStudent& t)
	{
		return (num == t.num) && (!isTwo == !t.isTwo) && 
			(name == t.name) && (level == t.level);
	}
};

stStudent a, b;
	a.isTwo = false;
	a.level = L"1";
	a.name = L"zhansan";
	a.num = 100;

	b = a; //正確

	if (a == b) //正確
	{
		cout << "相等" << endl;
	}

過載賦值運算子

A& operator= (const A& e)  
{
...
}