DataViewCtrlBase::GetModel()
-qualified const
非及びconst
-qualified過負荷の両方を有します。非const
オーバーロードは、現在のクラスインスタンスが非const
コンテキストからアクセスされている場合にのみ呼び出されます。
あなたはこの(擬似コード)のように、オーバーロードされているものとして、これらの方法を考えることができます。
DataViewModel* GetModel(DataViewCtrlBase* this) { /* ... */ } /* (0) */
const DataViewModel* GetModel(const DataViewCtrlBase* this) { /* ... */ } /* (1) */
例:
DataViewCtrlBase x;
auto& x_non_const = x;
x_non_const.GetModel(); // Calls (0) | Equivalent to: GetModel(x_non_const)
const auto& x_const = x;
x_const.GetModel(); // Calls (1) | Equivalent to: GetModel(x_const)
たぶん2の間に別の違いはありますか? – juanchopanza
関数定義の後の 'const'はシグネチャの一部なので、別の関数です – EdChum
標準ライブラリはこれらのオーバーロードでいっぱいです。 –