VOLDEMAR , eğer ilk gönderisini alıyorsan, neden sınıf var ki? Sınıf yazma, programın karmaşıklığının bir sonucudur, bireysel öğeler birçok dış bağlantıya sahip olduğunda, tüm bu öğeleri birleştiren ve basit bir arayüz oluşturan bir sınıf oluşturulur. Bence, bir sınıfın gerekli bir özelliği datadır (ints, doubles ...) - fonksiyonların çalıştığı materyal, sınıf her şeyi tek bir pakette (veri ve fonksiyonlar) birleştirir. OOP. Örneğin, iki örnek, ilki oop olmadan, ikincisi onunla birlikte:
void sum(int &i1, int &i2, int val)
{
i1 += val;
i2 += val;
}
int get_number(int &i1, int &i2)
{
return i1 + i2;
}
void main() // главная функция программы
{
int i1, i2;
sum(i1, i2, 56 );
any_fn(get_number(i1, i2)); // какое-то действие с нашей суммой.
}
class QQ
{
int i1;
int i2;
public :
void sum( int val)
{
this ->i1 += val;
this ->i2 += val;
}
int get_number()
{
returnthis ->i1 + this ->i2;
}
};
void main() // главная функция программы
{
QQ q;
q.sum( 56 );
any_fn(q.get_number()); // какое-то действие с нашей суммой.
}
İkinci örnekte, fonksiyonların çalışacağı veriler hakkında endişelenmemize gerek yok, bence OOP'nin ana hedefi bu.
Bir kuralım var: asla bir yıkıcıyı boş yazmayın. Bir yıkıcının olmaması, sınıf basitliğinin bir göstergesidir. Bir yıkıcı yazılırsa, bir kopya yapıcı ve = operatörü yazmanız veya bunları yasaklamanız gerekebilir. Misal:
struct S {};
class QQ
{
S *p;
public :
QQ() { this ->p = new S;}
~QQ() { deletethis ->p;}
};
void main()
{
QQ q;
QQ q2 = q;
}
Sonuç olarak, aynı işaretçi için iki kez silme çağrılır. bu şekilde doğru olur
class QQ
{
S *p;
public :
QQ() { this ->p = new S;}
~QQ() { deletethis ->p;}
QQ(QQ &); // Только объявляем, определения нигде нет.
QQ & operator =(QQ &); // Только объявляем, определения нигде нет.
};
//илиclass QQ
{
S *p;
public :
QQ() { this ->p = new S;}
~QQ() { deletethis ->p;}
QQ(QQ &q) { this ->p = new S(*q.p);}
QQ & operator =(QQ &q) {*this->p = *q.p;}
};
Onlar. Eğer bir yıkıcı yazmak zorunda olsaydınız, o zaman bu dikkatlice düşünmek için bir fırsattır - opera.= ve bir kopya yapıcı ile ne yapmalı? Sil, yaz...? Bence boş bir yıkıcı yazmaya değmez, yokluğu yukarıdakileri tekrarlamanın yararsızlığının bir göstergesidir.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Ekle.
ekledim ))
Bir daire için bir şekilde, bir kare için - başka bir şekilde hesaplanır. Ama yine de - Figura.GetSquare() öğesini çağırarak ,
Ve sessizlik...
2x2=? gibi bir soruydu.
Cevap vermekle ilgilenmiyor.
=================
Belki bu daha yakındır.
Bir sınıfta standart bir sanal yöntem seti vardır: Open(), Close(), Read(), Write(), vb.
Bu sınıf dosyalar, eşlemeler, kanallar, internet vb. ile çalışabilir.
Bu yöntemlerin sadece doldurulması (açıklaması) farklılık gösterecektir. Ancak sınıf arayüzü aynı olacaktır.
Konuyla ilgili 3. sayfa olması ve kimsenin örnek olarak tek satır kod vermemiş olması size şüpheli gelmiyor mu ???
Ayrıca, cevap vermesi ilginç değil, basit, o kadar basit ki kodlamaya çok tembelim...
Birisi bir şey bilseydi, cevap verirdi diye düşünüyorum...
VOLDEMAR , eğer ilk gönderisini alıyorsan, neden sınıf var ki? Sınıf yazma, programın karmaşıklığının bir sonucudur, bireysel öğeler birçok dış bağlantıya sahip olduğunda, tüm bu öğeleri birleştiren ve basit bir arayüz oluşturan bir sınıf oluşturulur. Bence, bir sınıfın gerekli bir özelliği datadır (ints, doubles ...) - fonksiyonların çalıştığı materyal, sınıf her şeyi tek bir pakette (veri ve fonksiyonlar) birleştirir. OOP. Örneğin, iki örnek, ilki oop olmadan, ikincisi onunla birlikte:
İkinci örnekte, fonksiyonların çalışacağı veriler hakkında endişelenmemize gerek yok, bence OOP'nin ana hedefi bu.
Oh, ve kodunuzla ilgili bir şey daha:
... class vr_trade { ... ~vr_trade(){} }; ...Bir kuralım var: asla bir yıkıcıyı boş yazmayın. Bir yıkıcının olmaması, sınıf basitliğinin bir göstergesidir. Bir yıkıcı yazılırsa, bir kopya yapıcı ve = operatörü yazmanız veya bunları yasaklamanız gerekebilir. Misal:
Sonuç olarak, aynı işaretçi için iki kez silme çağrılır. bu şekilde doğru olur
Onlar. Eğer bir yıkıcı yazmak zorunda olsaydınız, o zaman bu dikkatlice düşünmek için bir fırsattır - opera.= ve bir kopya yapıcı ile ne yapmalı? Sil, yaz...? Bence boş bir yıkıcı yazmaya değmez, yokluğu yukarıdakileri tekrarlamanın yararsızlığının bir göstergesidir.
İkinci yöntem neden bir sürü hata ve uyarı veriyor???
-> yerine bundan sonra bir nokta koyun. mql çipi.
Lütfen adımları açıklayın
yani
neden (:) işareti ve bu işaretle ne elde ederiz?