您好我正在学习如何在c ++中实现状态机,我真的不明白我用以下代码给我的函数:
void promptfornextevent(elevatorstate& state, int event){
std::cout<<"Current State = "<< state.Description() << std::endl;
}
我在主要功能中称之为:
int main(){
...
elevatorstate* currentstate = new state_1stfloor;
promptfornextevent(*currentstate, event);
...
}
我不明白使用线缆电梯的参考点和&amp;州。我的功能究竟从主函数中获得了什么?我以为我给我的函数一个对象(由当前状态指向)
答案 0 :(得分:0)
首先,通过引用传递参数,您将避免创建参数的额外副本。引用指向在main函数中创建的同一对象。
如果您通过副本传递参数,则会调用elevatorstate
的复制构造函数,并且返回值将分配给state
参数。
由于promptfornextevent
函数中使用了相同的对象,因此即使您返回promptfornextevent
函数,对main
中完成的对象的任何更改都将保留。