我想知道为什么控制不转到AB(),如果我在main()中传递abc(AB),因为当abc(10)通过时,控件将i初始化为10
11
答案 0 :(得分:1)
abc(AB);
这是名为abc
的{{1}}类型变量的声明,相当于AB
。所以调用no-arg构造函数。如果您不想命名变量,可以使用此语法:
abc AB;
这个“有效”,因为它不能被解析为声明,而你的版本可以。
但这还不够,您需要更改构造函数以接受abc{AB};
:
const&
(非const引用不会绑定到临时引用。)
答案 1 :(得分:0)
使用AB
来调用构造函数,这是一个函数:
abc(std::function<void(void)>&fb) : func(fb) {}
这会初始化func
以指向AB
,但仅此而已。也许你想称之为:
abc(std::function<void(void)>&fb) : func(fb) { func(); }