很新的C++。我看到人們通常在運算符重載中通過引用傳遞對象。那麼,我無法弄清楚什麼時候真的有必要。如下面的代碼所示,如果我在operator +中聲明瞭對象c1和c2時刪除了&符號,我仍然會得到相同的結果。在這種情況下,當我們不想修改c1或c2時,是否有任何理由要通過引用?通過引用傳遞一個對象重載運算符 - C++
#include <iostream>
class Keys
{
private:
int m_nKeys;
public:
Keys(int nKeys) { m_nKeys = nKeys; }
friend Keys operator+(const Keys &c1, const Keys &c2);
int GetKeys() { return m_nKeys; }
};
Keys operator+(const Keys &c1, const Keys &c2)
{
return Keys(c1.m_nKeys + c2.m_nKeys);
}
int main()
{
Keys cKeys1(6);
Keys cKeys2(8);
Keys cKeysSum = cKeys1 + cKeys2;
std::cout << "There are " << cKeysSum.GetKeys() << " Keys." << std::endl;
system("PAUSE");
return 0;
}
如果不通過引用傳遞對象(或由指針)作爲參數,可以通過值將它們傳遞,這意味着它們被複制;一些對象的複製可能很昂貴。 – piwi 2014-10-08 07:40:04
那麼你刪除了需要複製的對象作爲params的一件事,如果你採取一個參考,所以它可能會更有效率將參數作爲參考 – EdChum 2014-10-08 07:40:12