3

私は、「変えられないのなら、変えられるべきだ」と考えるタイプの人間ですconst。おそらく私はconstこれを極端に行っていますが、通常、関数の戻り値の型は変更できないはずなので、すべての関数を return に宣言しますconst。(もちろん、彼らが戻ってこない限りvoid- までに戻ることさえ意味がありconst voidますか?)

あなたはおそらく、私がちょっと頭がおかしくて、必要のないキーボード入力を疲れさせているか、またはすでに自分で使用しているので const を返すことは理にかなっていると思うでしょう。あるいは、あなたはどちらのことも考えていないかもしれません。その場合、私の推測は間違っていました。

g++4.8 を使用してプログラムをコンパイルし、コンパイラ スイッチを有効にしました-Wextra。そうするとき、g++は、return ステートメントをすべて無視することを警告します。いずれも までに戻ってきませんconstconstこれは明らかにコンパイル後に違いはありませんが、g ++を強制的にコンパイルして戻り値の型に注意を払う方法があることを知りたかったのです。

さらに重要なことに、なぜ g++ はconst-- を無視するのですか?それとも単に私が頭がおかしくて g++ が返すconst必要がないと考えているからですか?

リクエストに応じて: 例...

inline const bool collisionTest(...) { ... }

warning: type qualifiers ignored on function return type

4

1 に答える 1

9

それは無視されません。プリミティブ型を値で返すと役に立たないだけです。

値で返すということは、それが右辺値であるため、とにかく返されたものを変更できないことを意味します。const は冗長になります。

見る:

int foo();

リターンをどのように変更しますか?

foo() = 4;

コンパイラ エラーが発生します。

ただし、参照を返す場合、const は重要です。

int& foo();
const int& goo();

foo() = 42;  //okay 
goo() = 42;  //error
于 2013-09-01T17:01:15.107 に答える