2012-04-16 14 views
0

私たちのテキストブックの1つでは、C++でのインターフェイスを良いデザインとして使用することをお勧めします。彼らは以下の例を挙げている。メソッド名の前にこのconstは何を意味しますか?

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

私はの意味は取得できませんでした:私はCONSTがconstのインスタンスからそれらを呼び出し可能にするために()の後に使用されている知っている

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

を。しかし、VAtEndとVGetPosition(メソッド名)の前のconstはどういう意味ですか?

ありがとうございます。

+0

あなたががオブジェクトを返すことがしたい場合は! –

+0

constは左にバインドされます(左端にない場合は右にバインドされます)。 –

答えて

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 
} 
+0

ありがとう@Luchian Grigore。私はC++の知識を改訂する必要があります。ところで、constブールはより直感的です。私はあなたの投稿を答えとしてマークする前に9分待つように頼んでいます。( – Mahesha999

+0

) 'VGetPostition()= 4'や関数への割り当ては本当に奇妙です。 – Dennis

+1

@ Mahesha999:どちらが読みやすくなっているかは議論の余地がありますので、私はより一貫性があり、思考力が低下するため、右側に 'const'を優先します。' typedef int * intp; '、' const int * 'と' const intp'は異なる型ですが、 'int * const'は' intp const'と同じです(つまり、もしあなたがint型であれば型の代わりに型を精神的に置き換えることができます'const'が左側にある場合はできません。 –