MQL5 编译器不区分类和它的指针 - 页 11

 
Ilya Malev:

这一个。(* )在这里不需要。

*只有当操作=, ==, !=, !&或||直接应用于*指针时,才需要在μl中使用。

这正是需要的,IMHO,所以你不会忘记你正在处理的东西(一个对象或一个指向它的指针)。

Ilya Malev:

(如果你想再次删除它,并假装它从未存在过))

所以,是的。使用指针的进一步发展将导致C++的完全克隆。

也许他们会朝着C#的方向发展,在那里,"托管代码 "没有指针,但所有东西都有一个对象,甚至常见的类型bool int double等等。

 
Ilya Malev:

还有,顺便说一下,很可能因为所有的官方渠道(论坛、帮助、文档)都对操作者*保持沉默,也许管理员正在考虑再次删除它,并假装它从未存在过))。因此,目前依靠它的一般使用是危险的,我认为。

沉默可能是因为99.9%的用户并不关心这一切。为什么要用不必要的信息来打扰他们的大脑? 而 那些需要的人,要求并得到了它

你也是到现在才关心这个功能,不是吗? 现在你拼命地开始找借口,为什么你不知道它;)什么时候推出的有什么区别:立即还是几个月后? 如果我不告诉你,你还是不会知道它 )

 

嗯...也许也有指向数组的指针?我得去看看...我非常想念他们...

 
Georgiy Merts:

嗯...也许也有指向数组的指针?我得去看看...我非常想念他们...

不,你必须把数组放在类中,它们有指针。

 
Ilya Baranov:

不,你必须把数组放在类中,它们有指向它们的指针。

是的,唉。

实际上,CArray派生类对我来说是很方便的。我唯一想要指向数组的东西是指标,它们传递对数组的引用,而我必须在整个对象的层次结构中 "拖动 "这些引用,这非常不方便......

我曾经建议要么让指针指向数组,要么做一个指标函数,使用指向标准库 数组的指针,而不是数组链接,但可惜,我被拒绝了,理由是 "如果我们允许指针指向数组,就有可能使用未初始化的数组",尽管开发者对对象没有这种担心......是的,好吧,我把这留给他们的良知。

 
Georgiy Merts:

2.MQL不需要删除它没有选择的东西。Dmitriy在上面说的很对--创建一个对象--删除它。 我不喜欢C#中 "垃圾收集器 "的做法,当对象不是在我想删除的时候被删除,而是在收集器想删除的时候被删除

C#选取器永远不会删除一个活的对象或一个指针。它的目的是清除尸体堆中的垃圾,有时还会对其进行碎片整理。

 
Alexey Volchanskiy:

C#的汇编者从来不会删除一个活的对象或指针。它的目的是清除堆中的尸体垃圾,有时还会对其进行碎片整理。

我不是说垃圾收集器会删除一个活的对象或一个指针。我想说的是,当它想删除时就会删除它。而在我看来,这并不是好事。

我可以在删除或不删除的情况下工作。而且我甚至可以做智能点...尽管如此,我认为删除对象必须是可能的,创造对象的人必须删除该对象。

这就是我这种老派的老前辈。

 
SemenTalonov:

也许,他们会朝着C#的方向发展,在那里,"托管代码 "没有指针,所有的东西都有一个对象,甚至简单的类型bool int double等等。

是的,但他们仍然留下了在非托管代码中使用指针的可能性。的确,这样的代码有发行限制。

 
Georgiy Merts:

我不是说垃圾收集器会删除一个活的对象或一个指针。我想说的是,当它想删除时就会删除它。而在我看来,这并不是好事。

我可以在删除或不删除的情况下工作。而且我甚至可以做智能点...但是,尽管如此,我认为对象应该被删除,而且创造它的人应该删除它。

这就是我这种老派的老前辈。

乔治,你能不能举个例子,我不明白你的意思。你是这个意思吗?我想你可以自己做智能点。

bool first = false;

int Foo()
{
  int i;
  if(!first)
  {
     first = true; 
     i = 123;
  }
  return i;   
}

// И ты будешь надеятся, что i сохранит свое значение между сотней вызовов Foo? Может да (очень редко, если Foo вызывается 100 раз подряд), а может и нет.
 
Alexey Volchanskiy:

乔治,你能不能给我一个例子,我不明白你的意思。你是这个意思吗?自己制作智能点可能是可能的。

不,很明显,在这种情况下,该变量必须在退出区块时被删除。

我说的是由新创建的对象。

CMyObj* pmoObject  = new CMyObject;

C#标准中规定。"价值型对象(如结构)和引用型对象(如类)都会被自动销毁,但价值型对象会在包含它们的上下文被销毁时被销毁,而引用型对象会在对它们的最后一个引用被移除后被垃圾收集器无限期地销毁"

在这里,我不喜欢这种 "不确定的时间"。虽然,我甚至会承认,垃圾收集器可以比我更有效地删除一个对象,通过在创建该对象的类的析构器中删除该对象。