c++クラス関数のエイリアスを書く簡単な方法があるかどうか疑問に思いました。たとえば、list
コンテナオブジェクトがある場合、論理関数は次のようになります。
int list::length() { return len; }
しかし、プログラマーが使用する可能性のある別の論理エイリアスは、
int list::size() { return len; }
それで、両方の関数を完全な本体で書く代わりに、コンパイル時に重複しないようlist::size()
にエイリアスを作成する方法はありlist::length()
ますか?むしろ同じ関数を参照しますか?
でこれを行うことができることを読みましたが#define
、完全にスコープ外のどこかで他のコードネーム(つまり「サイズ」変数)と混同したくありません。
また、関数ポインターで修正できることも読みましたが、これは正確にはエイリアスではなく(逆参照を適用する必要があるため)、関数ポインターに宣言を与えることもできず、ユーザーに紛らわしいヘルプラインを提供します(私は思うでしょう)、さらに、コードを別のオブジェクト内にネストする必要がある場合は混乱します(スコープを調整する必要があります)。
私の推測の1つは、ほとんどの最適化コンパイラーによって、以下が直接関数エイリアスと見なされるかどうかです。
inline int list::length() { return len; }
inline int list::size() { return length(); }
または、C ++の厳密な「エイリアス」構文はありますか?(私は何も見つけることができませんでした-確かではありませんでした)
それでは、これを行うための最も効率的な方法は何でしょうか?
編集:それは私の好奇心にすぎないので、私は質問をまとめるために答えを受け入れました。良い情報をお持ちの方は、コメントや回答を追加してください。回答を変更することもあります。