問題タブ [const-method]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
3510 参照

c++ - c++では、constも機能するのにコンパイラが非const関数を選択するのはなぜですか?

たとえば、次のクラスがあるとします。

コードの別の場所には、次のようなものがあります。

この場合、コンパイラが非 const バージョンを選択する理由を知っている人はいますか?

これはやや不自然な例ですが、解決しようとしている実際の問題は、オブジェクトが変更された場合にオブジェクトを定期的に自動保存することであり、ポインターはある時点で変更される可能性があるため、非 const でなければなりません。

0 投票する
13 に答える
1164 参照

c++ - これらのメソッドをconstと宣言する必要がありますか?

私はいくつかのC++コードに取り組んでおり、次のようなプライベートメソッドを持ついくつかのマネージャーオブジェクトがあります

OnFooUpdated()このオブジェクトのリスナーでメソッドを呼び出します。

これらはこのオブジェクトの状態を変更しないため、const通常はシステム全体の状態を変更しますが、技術的にはメソッドにすることができることに注意してください。特に、リスナーオブジェクトは、このオブジェクトをコールバックして変更する場合があります。

個人的にはそのままにしておきたいので、宣言はしませんconst

ただし、静的コードチェッカーQACはこれを逸脱としてフラグを立てるので、宣言するconstか、なぜ非定数のままにして逸脱の許可を得る必要があるのか​​を議論する必要があります。

これらのメソッドを宣言しないための引数は何constですか?
または、QACに従って、宣言する必要がありますconstか?
このオブジェクトに限定された厳密にローカルな視点を採用する必要がありますか、それともシステム全体を考慮する必要がありますか?

0 投票する
5 に答える
2548 参照

c++ - constメンバー関数はconstメンバー関数のみを呼び出すことができますか?

constメンバー関数はconstメンバー関数のみを呼び出しますか?

私がcompute()をconstにしないと、コンパイラは文句を言います。これは、constメンバー関数がメンバーを変更することを許可されていないため、constメンバー関数がデータメンバーを「間接的に」変更することを意味するため、非constsへの呼び出しを許可しないためですか?

0 投票する
5 に答える
58461 参照

c++ - C++ - 'const' 修飾子を使用して静的メンバー関数を作成できない理由

今日は問題が発生しました。私はstaticメンバー関数が必要ですが、必須でconstはありませんが、より良いです。しかし、私は自分の努力に成功しませんでした。なぜ、またはどのように言うことができますか?

0 投票する
4 に答える
23556 参照

c++ - 非 const バージョンではなく const 関数を呼び出す

目的のために Qt の共有データ ポインターに似たものをラップしようとしました。

私は C++0x オプションを使用してコンパイルしています。最小限のコードは次のとおりです。

ご覧のとおり、Data.x は const 関数なので、呼び出される演算子 -> は const でなければなりません。そして、非 const をコメントアウトすると、エラーなしでコンパイルされるので、可能です。それでも私の端末は次のように出力します:

「非定数データptr」

それは GCC のバグ (私は 4.5.2 を持っています) ですか、それとも欠けているものがありますか?

0 投票する
2 に答える
782 参照

c++ - クラスの静的変数でデクリメント演算子を使用する方法

このようなクラスがあり、「getManagerNumber」でデクリメント演算子を使用して、ManagerNumber から 1 を引きたいのですが、どうすればよいですか?

0 投票する
1 に答える
120 参照

c++ - const テンポラリーが const メンバー関数よりも非 const メンバー関数を呼び出すことを選択するのはなぜですか?

サンプルコードはhttp://en.cppreference.com/w/cpp/types/add_cvから取得しまし た (少し変更しました。)

出力は次のとおりです。

2 番目の呼び出しでTは、const が修飾されているのでT()、const バージョンを呼び出す必要がありますよね? または、私が見逃した特別なルールはありますか?

0 投票する
1 に答える
2245 参照

c++ - const メソッドの const 参照リターンのスレッド セーフ

このクラスを考えてみましょう:

メソッドはgetVectorRefスレッドセーフですか?

getVectorRef別のスレッドが戻ってきたときにinsertElement、メンバ ベクトルが変更され、呼び出し元がgetVectorRef間違った const 参照を取得するような呼び出しが行われる可能性はありますか?

2 つの const 修飾子 (1 つはベクトル用、もう 1 つはメソッド用) は、スレッド セーフのコンテキストでは意味がありませんか?

0 投票する
2 に答える
791 参照

c++ - 非 const オブジェクトでは、なぜ C++ はメソッドの const バージョンを public-const および private-nonconst オーバーロードで呼び出さないのですか?

MSVC 2013 はこれを好まない:

const参照にキャストすると、次のように機能します。

非オブジェクトでconstメソッドを呼び出せないのはなぜですか?const

0 投票する
3 に答える
555 参照

c++ - C++ オーバーロードの解決、変換演算子、および const

この場合

状況はかなり明確です - f(int *) が呼び出されますが、これは正しいようです。

しかし、私がこれを持っている場合(間違ってそのように行われました(*)):

operator char *() が呼び出されます。そのような決定パスが、演算子 bool() に行くよりも優れている理由がわかりません。何か案は?

(*) const を 2 番目の演算子に追加すると、コードは当然期待どおりに機能します。