メンバ関数の委任のようなものをたくさん検索しましたが、何も見つかりませんでした。メンバ関数の委任
class Foo1 {
int bar(int a, int b = 1, bool c = false);
int bar(int a, bool c);
}
// Can I write it like:
class Foo2 {
int bar(int a, int b = 1, bool c = false);
// This line is my question:
int bar(int a, bool c) : bar(a, 1, c);
}
私のコンパイラは、唯一のコンストラクタは、初期化リストを取ると言ったが、私はどこかに上記のようなものを読んで思う:たぶん私は
は、私は次のような何かをしようと...間違った言葉を探しました。ルールからコンストラクタだけがinitリストを取るという例外はありますか?
10以上の機能を「デリゲート」する必要があるとパフォーマンスが低下する可能性があると私は考えました。私は関数本体の中に入って実際の関数を呼び出すのではなく、実際のbar関数を呼び出すべきだとコンパイラに伝えればもっと速くなると思っていました。私は間違っていると思った? –
@HenrikViebrockコンパイラが最適化を有効にすると、コンパイラはしばしば小さな関数をインライン化し、関数呼び出しのオーバーヘッドを排除します。また、コンストラクタのmem-initializersは実際には関数呼び出しであることがよくあります。 – aschepler
それを知らなかった。ありがとう! –