我正在调试一些用 C++ 编写的模拟软件,但无法理解部分代码。
该软件模拟一些在 3D 世界中移动的实体,它们的行为可以设置为从 A 到 B 沿直线移动、绕特定点旋转或遵循预定义的路线等。
当实体在模拟中移动时,有关其移动的一些信息会呈现给用户,例如:其当前速度、航向(方向)、到当前目标的距离、到达当前目标所需的时间该位置的目标和预计到达时间等。
我目前正在处理的错误是 ETA 和旅程的“完成当前行程的时间”向用户显示的值不正确。
我在向用户显示此信息的 C++ 源文件中遇到了以下代码:
DateTimeAndZone fpETA(mCurrentTime);
SystemTimeTypes::addRelativeTimeToSystemTime(fpETA, flightPlanETA);
DateTimeAndZone
是一个类,所以 fpETA
是该类的一个实例...我不明白的是 mCurrentTime
(这也是一个 DateTimeAndZone
),可以作为类实例的参数传递——看起来与将参数传递给函数的方式相同。
如果我转到 DateTimeAndZone
类的定义,在它的末尾有一个 return
语句返回一个 static std::string_classname
。
任何人都可以向我解释如何将一个类作为参数传递给新类的创建吗?这意味着什么?这是否意味着新类将采用现有类中存储的信息?还是我在这里遗漏了什么?
我在 SO 上遇到了这个问题,但它并没有真正回答我的问题... Passing a class object as an argument in C++
最佳答案
DateTimeAndZone fpETA(mCurrentTime);
这会调用 DateTimeAndZone 的构造函数,并定义参数。如果 mCurrentTime 是一个 DateTimeAndZone 对象,默认情况下将调用复制构造函数,如果已定义,则调用 DateTimeAndZone 的复制构造函数。
关于C++ 将参数传递给类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28190051/