Essential C++ を読んでいます。セクション 4.3 で、著者はconstの使用法を説明するために例を示します。
class val_class {
public:
val_class(const BigClass &v)
: _val(v) {}
const BigClass& val() const {return _val;}
BigClass& val() {return _val;}
};
void example(const BigClass *pbc, BigClass &rbc)
{
pbc->val();
rbc.val();
}
上記のコード セグメントでは、作成者は constness に基づいて関数 val をオーバーロードしています。そして、pbc->val()
const インスタンスrbc.val()
を呼び出し、非 const インスタンスを呼び出します。
pbcはBigClass型のconst ポインターです。BigClassにメンバー関数valがあることをどのように保証できますか? サンプル関数でBigClass を val_classに置き換える必要がありますか?