我搜索了很多類似於成員函數的委託,但我沒有找到關於它的一些東西。也許我搜索的錯誤的話......成員函數的代表
我嘗試做一些這樣的:
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
不知道。謝謝! –