在我的.h我有C++運算符Surchage類聲明
const CResultats & operator = (const CResultats & desResultats);
當我寫這篇文章:
CResultats CResultats :: operator = (const CResultats & desResultats) const
{
}
爲什麼不工作? 我是新來的C++ ...如果對不起這是愚蠢的。
在我的.h我有C++運算符Surchage類聲明
const CResultats & operator = (const CResultats & desResultats);
當我寫這篇文章:
CResultats CResultats :: operator = (const CResultats & desResultats) const
{
}
爲什麼不工作? 我是新來的C++ ...如果對不起這是愚蠢的。
聲明運營商爲
CResultats & operator = (const CResultats & desResultats);
,並把它定義爲
CResultats & CResultats :: operator = (const CResultats & desResultats)
{
}
你可以聲明(和定義)的operastor作爲
const CResultats & operator = (const CResultats & desResultats);
但是語義上是無效的聲明。
我很遺憾不允許改變運營商的代碼.. – Sadboy 2014-09-26 13:42:54
@Sadboy在這種情況下改變將操作符的類型返回給'const CResultats&'。 Vlad的版本根據賦值運算符的慣例(即您的定義非常規)。 – BeyelerStudios 2014-09-26 13:46:17
@BeyelerStudios和'const'賦值運算符的服務目的是什麼?這不是約定,而是有意義的。 – 2014-09-26 13:47:19
當你寫的「本」,這不是「有效的」,因爲它不符合簽名;編譯器不同
具有const
的成員操作符(函數)最後在const
對象上操作,就像那樣簡單。但是,在這種情況下,它沒有任何意義,因爲此運算符的唯一合理操作是修改對象。
此:
const CResultats & operator = (const CResultats & desResultats);
是通過常量引用採取CResultats
的函數的聲明,和由常量引用返回CRFesultats
。該方法本身不是const
。
但這:
CResultats CResultats :: operator = (const CResultats & desResultats) const
是一個const
功能,以const引用需要CResultats
一個函數的定義,並返回一個CResultats
的價值。
這些都是在兩個方面兩個不同的東西:
如果要定義相匹配的聲明,那麼你必須更改定義:
const CResultats & CResultats::operator = (const CResultats & desResultats)
{
// ...
}
閱讀:[?意義的「常量」最後的C++方法聲明】(HTTP: //sackoverflow.com/questions/751681/meaning-of-const-last-in-ac-method-declaration) – Csq 2014-09-26 13:39:34