文章 "MQL5 中对象创建和析构的顺序" - 页 2

 

شكرا جزيلا

 

m_array[] 从 GetPointer(arrray[i]) 函数中复制,因此成为POINTER_AUTOMATIC 类型。

我们不需要第 54 行:

 if(CheckPointer(m_array[i])==POINTER_DYNAMIC) delete(m_array[i]);

因为 MQL5 会为您删除 POINTER_AUTOMATIC。

 

下午好、


我不明白这一部分的意思:

//--- 如果execute===false 则不会执行此代码块
   if(execute)
     {
      CObjectB objB;
     }
//--- 如果执行===false,此代码块将被执行
   if(!execute)
     {
      CObjectC objC;
     }

代码的开头设置了 execute = false。执行等于 false。

第一个 IF:如果 execute 为 true,则应执行代码块。但在注释中却说,如果 它是true,则不会执行,而是转到下一个。

第二个 IF:如果 execute 为 FALSE,代码块将执行。但注释 中又说,如果为 True,程序块将执行

我认为 !- 是一个否定符号。

我的推理错误在哪里?

 
kashi_ann:

下午好、


我搞不懂这个情节:

在代码的开头,设置了 execute = false。执行等于 false。

第一个 IF:如果 execute 为 true,则应执行该代码块。但注释中说,如果True,则不会执行, 而是转到下一个。

第二个 IF:如果 execute 为 FALSE,代码块将被执行。但注释 中又说,如果为 True,程序块将执行

我认为 !- 是一个否定符号。

我的推理错误在哪里?

我已经强调了你的错误判断。作为参考:"false "是 "假","true "是 "真"。

为了更清楚,我还加上了注释:

//--- 如果 execute===false 则不会执行此代码块
//--- 如果 execute==true 则将执行此代码块
   if(execute)
     {
      CObjectB objB;
     }
//--- 如果执行===false,此代码块将被执行
//--- 如果 execute==true 则不会执行此代码块
   if(!execute)
     {
      CObjectC objC;
     }
 
Vladimir Karputov:

您的错误判断会用颜色标出。供参考:"false "表示 "假","true "表示 "真"。

为了更清楚起见,我添加了注释:

所以...下面的条目...

if(execute = true) и if(execute) - тожественны?
if(execute = false) и if(!execute) - тоже?

对吗?

 
kashi_ann:

好的我们得到以下说明。

对吗?

这是基础知识

 
Artyom Trishkin:

这是最基本的。

谢谢)基础知识是最重要的)

谢谢你没有懒得回答)
 
kashi_ann:

好的我们得到以下说明。

对吗?

是的,但你显然想用 == 而不是 =。

 
Andrey Khatimlianskii:

因此,巧合是肯定的,但你显然想使用 == 而不是 =。

Nah))))) = 和 == 之间的含义和区别我还没有搞清楚),我还在起步阶段)。

 
kashi_ann:

Nah)))) = 和 == 之间的含义和区别我还没有搞清楚)我还在学习的起步阶段))。

="是赋值运算符,"=="是比较运算符。