在我的.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