我有一个如下的构造函数:
Foo::Foo(std::unique_ptr<Bar> bar)
: left(bar->getLeft()),
right(bar->getRight()),
mBar(std::move(bar)) {}
由于bar
中的left(bar->getLeft())
而崩溃的程序是nullptr
。如果我使用left(mBar->getLeft())
,效果很好。
所以我想知道成员初始列表中是否有任何序列点?如果没有,如何确定move
语句是否发生?换句话说:在这种情况下,何时使用参数以及何时使用成员?