MQL5中的OOP问题 - 页 18

 

你能告诉我它有什么不同吗?
以这种方式创建一个对象,或指针

class CClass
{
   public:


}CObj, *pCObj;

来自经典的生物

CClass  CObj;
CClass *CObj;

注意到专业人员的不同行为,开始想知道为什么,文献检索,甚至不知道第一种方式叫什么。

 
Roman:

你能告诉我这有什么不同吗?
以这种方式创建一个对象,或指针

来自经典的生物

我注意到李子的不同行为,我想知道为什么,还有文献搜索,我甚至不知道该怎么称呼第一种寻找方式。

无论是在MQL还是在pluses方面,都没有区别。

 
Koldun Zloy:

无论是在MQLs还是在pluses方面,这都没有什么不同。

你不明白这个问题。区别不在于语言,而在于声明本身。
我不明白第一个例子中的对象的行为。
我的猜测是,该对象在堆栈中以同样的方式创建,并在调用类的析构器 后销毁,而且该对象在代码中是全局可见的。
这就是我想澄清的问题,第一种方法的行为是什么?
我的猜测是否正确?
在google中找到它叫什么?

因为我注意到(不是在mql中,而是在C++中),如果你以不同的方式创建一个对象,那么使用的方法中的行为就会改变,而不是像预期的那样。

 
Roman:

你不明白这个问题。区别不在于语言,而在于声明本身。
我不明白第一个例子中的对象的行为。
我的猜测是,该对象也是在堆栈中创建的,在调用类的析构器 后被销毁,该对象在代码中是全局可见的。
这就是我想澄清的问题,第一种方法的行为是什么?
我的猜测是否正确?
它叫什么,我可以用谷歌搜索?

因为我注意到,如果你以不同的方式创建一个对象,所使用的方法中的行为就会改变,而不是像预期的那样。

我理解这个问题。广告中没有任何区别。

 
Koldun Zloy:

我理解这个问题。广告中没有任何区别。

差别很可能是在范围上。
一个文件中的第一个例子总是全局可见的,第二个例子或新的,可以在一个函数中隐藏。

 
Roman:

差别很可能是在范围上。
一个文件中的第一个例子总是全局可见,第二个例子或新的,可以在一个函数中隐藏。

这里的区别不在于你如何声明,而是在哪里。

 
Koldun Zloy:

这里的区别不在于你如何申报,而是在哪里申报。

我也是通过逻辑推理得出这个结论的:) )
我想确定我的想法是正确的。谢谢你的澄清。

 
Vladimir Simakov:
   lotDigits=MathMax(-(int)MathFloor(MathLog10(lotStep)),0);

我检查了一下,这段代码在计算小数点时不能正确工作

基本上,我的也不一定能正常工作,我知道。

一个脚本来检查它。

void OnStart()
  {
   double l=0.0;
   for(int i=0; i<100; i++)
     {
      Print(l," ---> LotDigits / MyDigits = ",LotDigits(l)," / ",MyDigits(l));
      l+=0.003;
     }
  }
//+------------------------------------------------------------------+
int LotDigits(double value)
  {
   return(MathMax(-(int)MathFloor(MathLog10(value)),0));
  }
//+------------------------------------------------------------------+
int MyDigits(double v)
  {
   long i=10000000,k=long(v/0.0000001);
   int d=0;
   while(d<7 && k%i>0)
     {
      i/=10;
      d++;
     }
   return(d);
  }
//+------------------------------------------------------------------+

我附上了脚本日志。

附加的文件:
20190829.log  9 kb
 
Roman:

你能告诉我它有什么不同吗?
以这种方式创建一个对象,或指针

来自经典的生物

在专业人员中,我注意到不同的行为,我想知道为什么,而文献搜索,我甚至不知道该如何称呼第一种方式的外观。

就我个人而言,我也看不出有什么不同,但这种写作风格对我来说似乎相当危险。

指针在创建时必须立即等于NULL或者等于一个真实对象的指针。一个小的内存空间被创建,这个指针将被存放在那里,可以是一个空值,也可以是一个普通指针。

另一方面,声明一个对象,创建整个对象,调用构造函数并分配内存。

 
Igor Makanu:

我检查了一下,这段代码在计算小数点时没有正确工作

基本上,我的也不一定能正常工作,我知道。

一个脚本来检查它。

我附上了脚本日志。

我有一个假设,不会有很多,比如0.15。至少我没有听说过它。如果我突然看到一个,我就会重做。