4
MyClass* const Func(const std::string& statename)

このコベリティがエラーを出しているため

解析警告 (PW.USELESS_TYPE_QUALIFIER_ON_RETURN_TYPE) 戻り型の型修飾子は無意味です。

ここで const を本当に削除する必要がありますか?

4

3 に答える 3

6

警告は正しいです。はMyClass* const必要ありません。MyClass*それは単純であるべきです。ただし、削除する必要はありませんが、削除する必要があります。

その理由は、理論的 MyClass* constには の戻り値をFunc()編集できないようにするためです。しかし、これは左辺値ではないためconst、なくても編集できません。ここでデモを参照してください。したがって、 の有無にかかわらず、コンパイラは の戻り値を変更しようとすると、常にエラーを生成します。constFunc()

于 2012-01-23T11:02:53.157 に答える
5

const戻り値の型 ( )MyClass* constはまったく無意味です。同時に、コードがより冗長になる以外に害はありません。私は個人的にそれを削除します。

なぜ無意味なのかを理解するには、次のことを考慮してください。

MyClass* p = Func(statement);

どのような違いがありましたconstか?

つまり、返すことT* constは、概念的には返すことと変わりませんconst int

于 2012-01-23T10:53:25.447 に答える
3

動作するコードを取得するために を削除する必要はありませんがconst、無意味な がないと、コードは確実に改善されますconst。それは、「エラー」の前にある「警告」の言葉でもあります。

于 2012-01-23T10:51:39.380 に答える