MQL5中的OOP问题 - 页 85

 
这不是我第一次发现自己在想,在MQL中,只有在绝对必要的时候才使用OOP,而且只在代码的某个部分使用。
 
Pavel Verveyko:
这不是我第一次发现自己在想,在MQL中,只有在迫切需要的情况下,才会使用OOP,而且只在特定的代码部分。
到底是谁给了你这样一个愚蠢的想法?如果你不喜欢猫,那么你根本就不能烹饪它们))))。
 

我在某个地方读到过,论坛上也出现了这样一个结构的例子

delete &this;

谁能用这个做一个简单的例子?

我对这个delete &这个delete的内容感兴趣。

 
Igor Makanu:

我在某个地方读到过,论坛上也出现了这样一个结构的例子

谁能用这个做一个简单的例子?

我对这个delete & this deletes的内容感兴趣。

它自己删除了)))。

 
Vladimir Simakov:

它自己会删除)))

有道理

但我猜想,整个意义在于将它与静态方法 一起使用

需要测试它,真的不知道如何测试,这就是为什么我问


UPD: 昨天在网上搜索了这个话题,很多人提到了私有析构器,也需要思考它能做什么?

 
Igor Makanu:

1)但我怀疑 "删除&this; "的全部意义。- 与静态方法 一起使用
2) 昨天在网上搜索了这个话题,很多人提到了私有析构器,也需要思考它能提供什么?

1)从静态方法中,禁止对其进行访问。
哪里有 "删除&this;"?- https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this

2) 私有的析构器不允许在堆栈中创建对象,但仍然可以通过new操作符创建对象,这次是在堆中。

class A{
   ~A(){printf(__FUNCSIG__);}
public:
    void Delete(){
        delete &this;
    }
};

void OnStart() {
   A* a_ptr = new A();
   a_ptr.Delete();
}

这里是删除&this的另一种用法。

 
Sergey Dzyublik:

1)从静态方法中,禁止对其进行访问。
"删除&this; "在哪里?- https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this

2)一个私有的析构器禁止在堆栈中创建一个对象,但仍然可以通过new操作符创建一个对象,这次是在堆中。

这里是删除&this的另一种用法。

你总是可以用一些东西做一些事情。但这有什么意义呢?

你应该发明一个名字,宣布它是一种设计模式...就这样了。写一大堆代码而不是仅仅 "删除什么",这太酷了。

 
一个私人的破坏者保护你的发展,使其不被放纵。毕竟,你只能以一种成熟的方式对它们使用OOP--使用new和delete。顺便问一下,你为 "图案 "想好名字了吗?
 
Dmitry Fedoseev:
你真的有一个非常合适的绰号 ))
 
Igor Makanu:

我在某个地方读到过,论坛上也出现了这样一个结构的例子

谁能用这个做一个简单的例子?

我对这个delete & this deletes的内容感兴趣。

这是一个指向当前对象的指针。

通常情况下,delete this构造用于new创建的对象,但删除的责任在对象本身。在这种情况下,当对象决定不再需要它时,它就会调用 去初始化函数,在该函数 中它会像这样删除自己。

在我看来,这是一种极其危险的做法,只有在智能点的情况下才可以接受,因为智能点会自己计算对对象的引用,然后,当引用的数量为零时,它们可以自己删除。但在我看来,即使在这种情况下,也存在着难以发现的内存泄漏错误的空间。

在我看来,删除的责任应该由创建它的同一对象承担。它可以在创建时使用对象工厂模式,但删除仍应是创建新对象的对象的责任。