Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
方法名称前的常量是什么意思? 我们在一本教科书中建议我们应该用C++中的接口作为一个良好的设计实践。他们举了下面的例子 class IAnimation { public: virtual void VAdvance(const int deltaMilisec) = 0; virtual bool const VAtEnd() const = 0; virtual int const VGetPostition() const = 0; };_C++ - Fatal编程技术网

方法名称前的常量是什么意思? 我们在一本教科书中建议我们应该用C++中的接口作为一个良好的设计实践。他们举了下面的例子 class IAnimation { public: virtual void VAdvance(const int deltaMilisec) = 0; virtual bool const VAtEnd() const = 0; virtual int const VGetPostition() const = 0; };

方法名称前的常量是什么意思? 我们在一本教科书中建议我们应该用C++中的接口作为一个良好的设计实践。他们举了下面的例子 class IAnimation { public: virtual void VAdvance(const int deltaMilisec) = 0; virtual bool const VAtEnd() const = 0; virtual int const VGetPostition() const = 0; };,c++,C++,我不明白以下的意思: virtual bool const VAtEnd() const = 0; virtual int const VGetPostition() const = 0; 我知道const用于使它们可以从const实例中调用。但是VAtEnd和VGetPosition方法名称之前的常量意味着什么 谢谢。表示返回类型为const,与: virtual const bool VAtEnd() const = 0; virtual const int VGetPostition()

我不明白以下的意思:

virtual bool const VAtEnd() const = 0;
virtual int const VGetPostition() const = 0;
我知道const用于使它们可以从const实例中调用。但是VAtEnd和VGetPosition方法名称之前的常量意味着什么


谢谢。

表示返回类型为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
}

看起来代码作者试图使代码难以理解!const绑定到左边,除非它在最左边,然后绑定到右边。谢谢@Luchian Grigore。我必须修改我的C++知识。顺便说一下,康斯特布尔更直观。是的,因为我是新来这里的,所以要求我等9分钟,然后我才能将你的帖子标记为答案:。它的存在是为了防止像:vGetPostion=4或任何函数赋值这样的奇怪。我不知道你为什么要这么做。@Mahesha999:哪一个更具可读性取决于讨论,我更喜欢右边的const,因为它更一致,因此需要更少的思考。考虑TyBuffINT*INTP;现在const int*和const intp是不同的类型,但是int*const和intp const是一样的,也就是说,如果你在右边写const,你可以在思想上替换typedef上的类型,但是如果const在左边,你就无法做到这一点。@Mahesha999:const-bool更直观,如果你碰巧说的是一种语言,比如英语,通常把形容词放在名词之前。bool const与const的其他用法更为一致,例如char const*const f const,其中每个const都在其前面限定标识符。应该注意的是,按const值返回对象不是一种好的做法,因为它会抑制C++11移动语义。