把main函数中火箭发射代码挪走一些,构成一个单独的火箭发射函数launch_rocket(),如下图所示:
代码:
之所以没有将io_service对象也挪到launch_rocket()函数中,是因为正常的asio程序肯定还会有大量的其他异步操作需要这个io_service对象。
运行效果:
屏幕上什么也没有输出
原因分析:
由于代码被简单的挪到一个独立的函数launch_rocket()中,所以在该函数结束时,其内的局部对象counter生命周期结束了,自然counter所包含的“_count”和“_timer”也玩完了。一切都没有了,这时再调用ios.run(),当然什么也没有发生。