第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

operator==()運算符重載為什么不能聲明為友元函數(shù)?

#pragma?once
#ifndef?COORDINATE_H
#define?COORDINATE_H
#include?<iostream>
using?namespace?std;
class?Coordinate{	
public:	
friend?bool?operator==(Coordinate?&,?Coordinate?&);	
friend?ostream&?operator<<(ostream?&os,?Coordinate?&coor);	
Coordinate&?operator=(const?Coordinate?&rhs);
	
Coordinate(int?x=0,?int?y=0);	
Coordinate(const?Coordinate?&rhs);	
//void?printCoordinate();
protected:
private:	
int?m_iX;	
int?m_iY;
};
Coordinate::Coordinate(int?x,?int?y)
{	
m_iX?=?x;	
m_iY?=?y;
}
Coordinate::Coordinate(const?Coordinate?&rhs)
{	
m_iX?=?rhs.m_iX;	
m_iY?=?rhs.m_iY;
}
Coordinate?&?Coordinate::operator=(const?Coordinate?&rhs)
{	
m_iX?=?rhs.m_iX;	
m_iY?=?rhs.m_iY;	
return?*this;
}
ostream&?operator<<(ostream?&os,?Coordinate?&coor)
{	
os?<<?"("?<<?coor.m_iX?<<?","?<<?coor.m_iY?<<?")"?<<?endl;
return?os;	
}
bool?operator==(Coordinate?&lhs,Coordinate?&rhs)
{	
if?(lhs.m_iX==rhs.m_iX&&lhs.m_iY==rhs.m_iY)		
return?true;	
else		
return?false;	
}?
#endif?//?!COORDINATE_H

operator==運算符重載仍然在下面這個成員函數(shù)中報錯

int?MyList::LocateMyList(Coordinate?*?p)
{	
for?(int?i?=?0;?i?<?m_iLength;i++)	
{		
if?(m_pList[i]?==?*p)	//error:沒有與這些操作數(shù)匹配的"=="運算符		
return?i;	
}	
return?-1;
}


正在回答

2 回答

老師好像是說 ==只傳進去一個參數(shù) ,所以就不需要用友元函數(shù)重載

0 回復(fù) 有任何疑惑可以回復(fù)我~

你在函數(shù)申明的時候,參數(shù)都沒寫。

==運算符重載的時候,傳入一個參數(shù)就行,是比較傳入?yún)?shù)和當前參數(shù)。? 你寫的傳入了2個參數(shù)


個人拙見

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

寶慕林5283917 提問者

查了相關(guān)資料,= =運算符作為二元運算符重載時是可以作為友元函數(shù)并且需要傳入兩個參數(shù)的。關(guān)于函數(shù)聲明時是否需要寫入形參名稱,在C++ Primer中有提到函數(shù)在聲明時形參名稱可以不用寫出來。我在寫另外一個例子時,使用同樣的實現(xiàn)沒有報錯。所以感覺很奇怪。
2020-03-23 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

operator==()運算符重載為什么不能聲明為友元函數(shù)?

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號