0

const を追加するか、関数を返すときにそれを無視すると、何が違うのかを理解しようとしました。例を通して私の質問を説明しましょう。

const int foo()
{
    return 3;
}

int main()
{
    int check;
    check=foo();
    cout<<"before:"<<check<<endl;
    check=1;
    cout<<"after:"<<check<<endl;
    return 0;   
}

これまで、const foo() を書いたので、チェック変数を変更できないといつも思っていましたが、コンパイルしてエラーは発生しませんでした。

foo() 関数の前に const を書くことで、何を得たり失ったりするのだろうか。

前もって感謝します

4

4 に答える 4

2

変数を変更していません。あなたはそれのコピーを変更しています。

check=foo();

によって返された値を に代入しfooますcheckcheckありませんconst

于 2013-10-25T07:52:48.907 に答える
2

プリミティブの戻り値の型に対するconst修飾子は無視されます。

この質問も参照してください: const オブジェクトを返す必要がありますか?

于 2013-10-25T07:54:13.937 に答える
0

違いは、次のコンパイラ警告です。

warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
const int foo()
              ^

ライブデモをご覧ください。

このタイプのものは無視されるため、効果はありません。

于 2013-10-25T07:52:36.477 に答える
0

参照を返そうとするときに違いが生じます。

例えば:

int gGlobal;

const int & func()
{
    return gGlobal;
}

int main ()
{
     //Following statement will give error.
     func() = 3;
     return 0;
}
于 2013-10-25T08:01:53.400 に答える