私の投稿の1つへのコメントは私に興味を持った:
私も。また、アクセサー/ミューテーターにも同じ名前を付けます。
setBar(int bar)
同じ名前のミューテーターの代わりにいつも使っていたので、これについて疑問に思いました。知りたいのですが、コンパイラはconst識別子に基づいて実行時に何が変化するかを判断できますか、それともパラメータがあるため同じ関数名を使用できますか?
これはうまくコンパイルされますか?
class Foo
{
int bar_;
public:
int bar() { return bar_; }
void bar(int bar) { bar_ = bar; }
}
または、これを実行する必要がありますか(とにかくこれを実行する必要があることを認識しています。これについては、一緒に実行してください)。
int bar() const { return bar_; }
どっちがどっちかわからない。定数の正確さは重要なので、1つは変更し、もう1つは変更しないので、コンパイラーにオーバーロードに反対してもらいたいと思います。
なぜこのように機能するのですか?