参考函数参数

时间:2017-01-24 08:24:47

标签: c++ pointers reference

您好我正在学习如何在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;州。我的功能究竟从主函数中获得了什么?我以为我给我的函数一个对象(由当前状态指向)

1 个答案:

答案 0 :(得分:0)

首先,通过引用传递参数,您将避免创建参数的额外副本。引用指向在main函数中创建的同一对象。

如果您通过副本传递参数,则会调用elevatorstate的复制构造函数,并且返回值将分配给state参数。

由于promptfornextevent函数中使用了相同的对象,因此即使您返回promptfornextevent函数,对main中完成的对象的任何更改都将保留。