Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Bu, yeni operatörle bir örnek oluşturmanın gerekli olacağı anlamına gelir.
Yani bir şeyi anlamıyorum. Yeni operatörün kullanımını zorlamak için iyi nedenler nelerdir? O olmadan olmaz mı?
Nesnelerin dinamik olarak oluşturulması gerekiyorsa gereklidir. Kaç tane nesneye ve ne tür nesnelere ihtiyaç duyulacağı önceden bilinmiyorsa.
Так я вот одного не пойму. Какие веские причины принуждают к использованию оператора new ? Без него типа никак?
Nesnelerin dinamik olarak oluşturulması gerekiyorsa gereklidir. Kaç tane nesneye ve ne tür nesnelere ihtiyaç duyulacağı önceden bilinmiyorsa.
Dinamik sınıf dizilerini kullanabilirsiniz. MQL'de bu işe yarayacaktır. C++'da, sınıf üyelerinin sınıf başlatmasıyla ilgili sorunlar olabilir. Bu nedenle, bir diziye bir işaretçi koymak daha iyidir, ancak basit olanı değil, akıllı olanı. Sınıf başlatma ve bellek temizleme ile uğraşmamak için.
Bu yapı nasıl "okunur"?
Ve özellikle:
Bakıyorum ve olan bitenin özüne tam anlamıyla dalmıyorum...Bu yapı nasıl "okunur"?
ptr, cFather (sınıf) türüne dönüştürülür ve ( cFather ) yöntemi çağrılır GetData()
bunun gibi bir şey..
ptr, cFather (sınıf) türüne dönüştürülür ve ( cFather ) yöntemi çağrılır GetData()
bunun gibi bir şey..
Bir çeşit teneke ... Ben de öyle düşündüm, ama .. bu bir türe (sınıf) getirmek için çok fazla. Programlamada ve bu yüzden duyduğum kadarıyla özel bir söz verilmesi tavsiye edilmiyor. Ve burada sadece standart bir türe değil, bir sınıfa da yayın yapılıyor.
Genel olarak, bu koda bir kez daha dönelim:
Burada f fonksiyonunun prototipinin parametrelerinde f fonksiyonunun parametre olarak cFather sınıfının bir yöntemini aldığı açıkça görülmektedir. BAŞLAT'taki kodun devamında aşağıdaki durumu görüyoruz:
f(ptr); // вернет 3
Burada f işlevi, parametreleri cFather sınıfının bir yöntemini değil, görünüşe göre cChild sınıfının bir işaretçisini alır. Çünkü cChild nesne, *ptr = GetPointer( nesne);
mantık nedir?
mm .. mantık nerede?
f() yönteminde, mantık, gelen parametrenin cFather (veya ardılları) için doğru şekilde işleneceğidir.
mm .. mantık nerede?
f() yönteminde, mantık, gelen parametrenin cFather (veya ardılları) için doğru şekilde işleneceğidir.
Onlar.
burada *p , cFather için bir işaretçi mi?
Aynı zamanda C++ öğreniyorum ve benzer kelimeler biraz kafamı karıştırıyor. İşaretçiler burada aynı olmasa da .
Onlar.
burada *p , cFather için bir işaretçi mi?
Aynı zamanda C++ öğreniyorum ve benzer kelimeler biraz kafamı karıştırıyor. İşaretçiler burada aynı olmasa da .
Bir soru sormayalı birkaç hafta oldu. sormaya karar verdi. Orada çok fazla zorluk yok, ancak böyle bir seçeneğin gerçekleşip gerçekleşmediği mantıksal olarak ilginç. İşte kod:
Bu kodda yalnızca 2 genel işlev vardır:
Ve 2 özel işlev, ihtiyaç anında doğrudan kamu veya daha doğrusu kamu işlevleri aracılığıyla çağrılır. void SetName(string n) işlevinde parametrenin n olması ve her iki private yönteminde de private: string GetFirstName(string full_name) ve string GetLastName(string full_name) nedense parametrenin aynı ayarlanmaması ilginçtir. Her ne kadar tam olarak bu kodu alsak da (başka bir şey değil), o zaman burada bu özel yöntemler, aynı parametrelerle ve başka hiçbir şey olmayan genel yöntemler aracılığıyla çağrılır. O halde parametrelere neden başka isimler verelim?
Umarım soru açıktır.