結構體沒有過載==,不能判斷相等!!沒有過載=,可以賦值
阿新 • • 發佈:2019-01-04
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)
{
...
}