MyClass* const Func(const std::string& statename)
このコベリティがエラーを出しているため
解析警告 (PW.USELESS_TYPE_QUALIFIER_ON_RETURN_TYPE) 戻り型の型修飾子は無意味です。
ここで const を本当に削除する必要がありますか?
MyClass* const Func(const std::string& statename)
このコベリティがエラーを出しているため
解析警告 (PW.USELESS_TYPE_QUALIFIER_ON_RETURN_TYPE) 戻り型の型修飾子は無意味です。
ここで const を本当に削除する必要がありますか?
警告は正しいです。はMyClass* const
必要ありません。MyClass*
それは単純であるべきです。ただし、削除する必要はありませんが、削除する必要があります。
その理由は、理論的 MyClass* const
には の戻り値をFunc()
編集できないようにするためです。しかし、これは左辺値ではないためconst
、なくても編集できません。ここでデモを参照してください。したがって、 の有無にかかわらず、コンパイラは の戻り値を変更しようとすると、常にエラーを生成します。const
Func()
const
戻り値の型 ( )MyClass* const
はまったく無意味です。同時に、コードがより冗長になる以外に害はありません。私は個人的にそれを削除します。
なぜ無意味なのかを理解するには、次のことを考慮してください。
MyClass* p = Func(statement);
どのような違いがありましたconst
か?
つまり、返すことT* const
は、概念的には返すことと変わりませんconst int
。
動作するコードを取得するために を削除する必要はありませんがconst
、無意味な がないと、コードは確実に改善されますconst
。それは、「エラー」の前にある「警告」の言葉でもあります。