复制构造函数 - MetaTrader 5 的脚本
以下是适用于 MQL 的一个选项。
该技术称为“复制构造函数”。确保以递归方式复制所有字段,包括复杂数据类型。
请参考下面的示例代码,您将了解它是如何工作的。
/********************************************************************/ 空白类示例() { 打印(__功能__); 一个a1; A a2=Fa();//从函数接收对象 a1.工作(); a1.Report();//1 1 1 1 a2.Report();//3 3 3 3 /*继续使用函数中的对象*/ a2.工作(); a2.Report();//4 4 4 4 返回; }/******************************************************************** A 类零件*/ 结构体C {整数MX; C():mx(0) {}};班级D {民众:整数MX; D():mx(0) {} D(D &d):mx(d.mx) {}};/********************************************************************/ 班级一个 {受保护的: 整数 MX; //简单的 整数 马[];//大批 C mc; //结构体 D d; //班级 民众: /*复制构造函数*/ A(A &a):mx(a.mx),d(a.d) {数组复制(妈,妈); mc=a.mc;} /*显式默认构造函数*/ A():mx(0){} /*方法*/ 空白 工作(){mx++;数组调整大小(ma,mx); mc.mx=mx; d.mx=mx;} 空白 报告() {打印(MX,” “,数组大小(马),” “,mc.mx,” “,d.mx);} };/********************************************************************/阿法() { 一个一个; 为了(整数我=0;我<3;我++) {a.工作();}//很多工作 返回一个;//返回类对象 }/**/
想要返回一个结构?
通常可以使用函数作为通过引用发送的参数来更新结构。
如果您希望返回带有函数的结构体,也是可能的,但与类不同,结构体不需要显式复制
构造函数。
/********************************************************************/ 空白结构示例() { 打印(__功能__); B b1; B b2=Fb();//结构体从函数接收 b1.mx++; /**/ 打印(b1.mx,” “,数组大小(b1.ma));// 1 0 打印(b2.mx,” “,数组大小(b2.ma));// 10 9 返回; }/********************************************************************/ 结构体乙 { 整数 MX; 整数 马[]; B():mx(0){}//构造函数,正式不需要 };/********************************************************************/BFB() { 乙b; 为了(整数我=0;我<10;我++) {b.mx++;数组调整大小(b.ma,i);}//努力工作 返回乙;//结构返回 }/**/
附件下载
📎 copyconstructor.mq5 (5.52 KB)
Source: MQL5 #29357
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录
