方法名称之前的这个const是什么意思?

时间:2012-04-16 16:22:55

标签: c++

在我们的一本教科书中,建议我们应该使用C ++中的接口作为一种好的设计实践。他们给出了以下示例;

class IAnimation
{
  public:
      virtual void VAdvance(const int deltaMilisec) = 0;
      virtual bool const VAtEnd() const = 0;
      virtual int const VGetPostition() const = 0;
};

我没有理解:

virtual bool const VAtEnd() const = 0;
virtual int const VGetPostition() const = 0;

我知道在after()之后使用const来使它们可以从const实例中调用。但是VAtEnd和VGetPosition(方法名称)之前的const是什么意思?

谢谢。

1 个答案:

答案 0 :(得分:7)

这意味着返回类型是const,它与:

相同
virtual const bool VAtEnd() const = 0;
virtual const int VGetPostition() const = 0;

它没有实际意义,因为无论如何都会复制返回值。

如果您要返回一个对象:

struct A
{
    void goo() {}
};

const A foo() {return A();}



int main()
{
    A x = foo();
    x.goo();      //ok
    foo().goo();  //error
}