MQL5'te OOP hakkında sorular - sayfa 85

 
Genel olarak, MQL OOP'de yalnızca acil ihtiyaç durumunda ve kodun yalnızca belirli bir bölümünde kullanmanın daha iyi olduğunu düşündüğüm ilk kez bu değil.
 
Pavel Verveyko :
Genel olarak, MQL OOP'de yalnızca acil ihtiyaç durumunda ve kodun yalnızca belirli bir bölümünde kullanmanın daha iyi olduğunu düşündüğüm ilk kez bu değil.
Kim söyledi sana böyle bir aptallığı? Kedileri sevmiyorsan, onları nasıl pişireceğini bilmiyorsun)))
 

Bir yerde okudum ve burada forumda böyle bir tasarıma sahip bir örnek vardı

 delete & this ;

basit bir örnek herkes bununla yapabilir mi?

bu silmeyi neyin sildiği sorusuyla ilgileniyor &this;

 
Igor Makanu :

Bir yerde okudum ve burada forumda böyle bir tasarıma sahip bir örnek çıktı

basit bir örnek herkes bununla yapabilir mi?

bu silmeyi neyin sildiği sorusuyla ilgileniyor &this;

kendini siler

 
Vladimir Simakov :

kendini siler

mantıklı

ama bütün meselenin statik yöntemlerle kullanmak olduğundan şüpheleniyorum

test etmen gerek ama nasıl olduğunu anlamadım o yüzden sordum


UPD: Dün bu konuyu google'da çabucak arattım, özel bir yıkıcıdan pek çok söz var, bu yüzden bunun ne verebileceğini düşünmelisin

 
Igor Makanu :

1) ama "delete &this;" ifadesinin tüm noktasından şüpheleniyorum. - statik yöntemlerle kullanın
2) dün bu konuyu çabucak googledim, özel bir yıkıcıdan pek çok söz var, bu yüzden ne verebileceğini düşünmelisin

1) Statik yöntemlerden buna erişim yasaktır.
"Delete & this;" dedikleri yerde - https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this

2) Özel bir yıkıcı, yığın üzerinde bir nesne oluşturmayı yasaklar, ancak daha önce olduğu gibi, yeni operatör aracılığıyla bu kez öbek üzerinde bir nesne oluşturulabilir:

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

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

İşte bir başka silme kullanımı &bu.

 
Sergey Dzyublik :

1) Statik yöntemlerden buna erişim yasaktır.
"&bunu sil" dedikleri yer; - https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this

2) Özel bir yıkıcı, yığın üzerinde bir nesne oluşturmayı yasaklar, ancak daha önce olduğu gibi, yeni operatör aracılığıyla bu kez öbek üzerinde bir nesne oluşturulabilir:

İşte bir başka silme kullanımı &bu.

Her zaman bir şeyle bir şeyler yapılabilir. Peki ya anlamı?

Bir isim bulmak, onu bir tasarım kalıbı olarak ilan etmek gerekliydi ... ve sonra. Çok havalı - bir grup kod yazmak için bir "bir şeyi silmek" yerine.

 
Ve özel bir yıkıcı, gelişmelerinizi amatör enayilerden korur. Sonuçta, onlarla OOP yalnızca yetişkin bir şekilde kullanılabilir - yeni ve silme ile. Bu arada, "desen" için bir isim düşündünüz mü?
 
Dmitry Fedoseev :
Gerçekten çok uygun bir takma adın var))
 
Igor Makanu :

Bir yerde okudum ve burada forumda böyle bir tasarıma sahip bir örnek vardı

basit bir örnek herkes bununla yapabilir mi?

bu silmeyi neyin sildiği sorusuyla ilgileniyor &this;

bu, geçerli nesneye yönelik bir işaretçidir.

Genellikle, bu yapıyı silme, nesnenin yeni tarafından oluşturulduğu yerde kullanılır, ancak silme sorumluluğu nesnenin kendisine aittir. Bu durumda, nesne artık gerekli olmadığına karar verdiğinde , deinitialization function çağırır ve bu şekilde kendini siler.

Benim düşünceme göre, bu son derece tehlikeli bir uygulamadır, yalnızca kendileri bir nesneye yapılan referansları sayan akıllı işaretçiler için geçerlidir ve daha sonra referans sayısı sıfıra eşit olduğunda kendilerini silebilirler. Ancak bu durumda bile, bana öyle geliyor ki, ince bellek sızıntısı hatalarına yer var.

Benim düşünceme göre, silme sorumluluğu onu yaratan nesneye ait olmalıdır. Oluşturulduğunda, nesne fabrika desenini kullanabilir, ancak silme işlemi yine de yeni nesneyi oluşturan nesne tarafından yönetilmelidir.