C++将参数传递给类的实例
C++ passing parameters to an instance of a class
我正在调试一些用C++编写的仿真软件,但无法理解部分代码。
该软件模拟一些在3D世界中移动的实体,并且可以设置它们的行为,使它们从A到B直线移动,围绕特定点螺旋移动或遵循预定义的路线等。
当实体在模拟中移动时,会向用户显示有关其移动的一些信息 - 例如:其当前速度,航向(方向),到当前目标的距离,到达该位置的当前目标和ETA所需的时间等。
我目前正在处理的错误是旅程的 ETA 和"完成当前路段的时间"向用户显示不正确的值。
我在向用户显示此信息的C++源文件中遇到了以下代码:
DateTimeAndZone fpETA(mCurrentTime);
SystemTimeTypes::addRelativeTimeToSystemTime(fpETA, flightPlanETA);
DateTimeAndZone
是一个类,所以fpETA
是该类的一个实例......我不明白的是mCurrentTime
(也是DateTimeAndZone
)如何作为类实例的参数传递 - 似乎与参数传递给函数的方式相同。
如果我去定义 DateTimeAndZone
类,它的末尾有一个返回static std::string_classname
的return
语句。
谁能向我解释如何将类作为创建新类的参数传递?这有什么影响?这是否意味着新类将采用存储在现有类中的信息?还是我在这里缺少了什么?
我在 SO 上遇到了这个问题,但它并没有真正回答我的问题......在 C++ 中将类对象作为参数传递
DateTimeAndZone fpETA(mCurrentTime);
这将调用 DateTimeAndZone 的构造函数,并定义参数。如果 mCurrentTime 是 DateTimeAndZone 对象,则默认情况下将调用复制构造函数,或者调用 DateTimeAndZone 的复制构造函数(如果已定义)。
称为复制构造函数。它通过复制mCurrentTime
对象对面的数据来创建新的DateTimeAndZone
对象。此类函数的签名通常是:
DateTimeAndZone (const &DateTimeAndZone);
如果在类定义中查找具有该签名的方法,则应看到此特定复制构造函数的作用。
类可以像任何其他类型一样作为参数传递,您确实需要查看该构造函数的实现(如果没有文档)以查看它使用该参数的目的。
在一般使用中,这种类型的构造函数称为复制构造函数,有很多问题解释了复制构造函数的使用以及它们带来的含义:
我们什么时候必须使用复制构造函数?
复制构造函数和赋值运算符
C++中的复制构造函数是什么?
深拷贝和浅拷贝有什么区别?
以下内容:
class DateTimeAndZone;
DateTimeAndZone fpETA(mCurrentTime);
// ^ this invokes:
DateTimeAndZone::DateTimeAndZone(const DateTimeAndZone &arg);
最后一行是 DateTimeAndZone
类的复制构造函数。此复制构造函数将创建一个新的 DateTimeAndZone
对象,该对象将保存您传递的参数的副本(在本例中为 mCurrentTime
)。
复制构造函数可以由编译器自动生成(您可以研究此幻灯片共享以查看在哪些情况下它是或不是)或用户定义。
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用指向成员的指针将成员函数作为参数传递
- 如何将参数传递给正在使用模板的类
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 修改函数中的指针(将另一个指针作为参数传递)
- 如何将部分流作为参数传递
- 我正在开发服务器,ip作为参数传递不起作用
- 将成员函数指针作为参数传递给模板方法
- 如何在C++中将迭代器作为函数参数传递
- 将附加参数传递给使用 beast::bind_front_handler 调用的函数
- 如何将模板化类实例作为模板参数传递给另一个模板?
- 是否可以使用将不同参数传递给构造函数的类的不同实例初始化向量
- 使用提升的模板实例化:传递额外的参数
- 如何使用 SWIG 将 Python 类实例作为 C++ 函数的参数传递
- 从main()将类对象实例作为参数将参数传递到另一个类对象实例
- C++将参数传递给类的实例
- 如何使用 boost::bind 将类/结构实例作为参数传递给回调
- 将打开的窗口实例作为参数传递到第二个窗口中
- 确保Windows c++控制台应用程序的单实例和参数传递的正确方法
- 将函数指针作为构造函数的参数传递给私有实例变量时出错