重複する Getter の Const の難題を克服する
const バージョンと非 const バージョンの両方を持つクラスに getter を実装するときにジレンマが発生します。コンパイル エラーは、どちらかのメソッドを使用したもう一方のメソッドの実装を妨げます。さらに、非 const バージョンから const バージョンを呼び出すにはキャストが必要です。
エレガントなソリューション
Effective C は、型破りでありながら効果的なソリューションを提案します。 -const version は、const バージョンから const をキャストして取得します。見た目には美しくありませんが、呼び出し関数が非定数であるため、このアプローチでは安全性が保証されます。したがって、const オブジェクトから const をキャストすることは許容されます。
例:
class Foo { public: const int& get() const { // Non-trivial work return foo; } int& get() { return const_cast<int&>(const_cast<const Foo*>(this)->get()); } };
以上がC で定数ゲッターと非定数ゲッターの両方を効率的に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。