结构体和联合体
结构体是最容易理解的对象类型,因此我们将从结构体开始介绍 OOP。结构体与类有很多共同之处,而类是 OOP 的主要构建块,因此理解结构体将为日后学习类打下基础。同时,结构体也有某些不同之处,其中一些可能是限制,而另一些则可能是优势。特别是,结构体不能有 虚函数,但可用于与第三方 DLL 集成。
在实现算法时,选择使用结构体还是类,通常取决于对对象元素的访问需求以及是否存在内部业务逻辑。如果只需要一个用来存放结构化数据的简单容器,并且不需要检查容器内部状态的正确性(在编程中称为“不变式”),那么使用结构体就完全可以满足需求。如果您想限制访问并支持根据某些规则进行写入和读取(这些规则以分配给对象的函数的形式来规定,我们将在后面讨论),那么最好使用类。
MQL5 内置了各种类型的结构体,用于描述交易中需要的实体,包括报价数据 (MqlRates)、即时报价 (MqlTick)、日期和时间 (MqlDateTime)、交易请求 (MqlTradeRequest)、请求的结果 (MqlTradeResult) 等。我们将在本书第六章中讨论它们。